Docker.Service.AI.Diffusions.STABLE_DIFFUSION.js
JavaScript source for AI models in Docker containers, 42 lines. Raw file
const Security = require('Security');
const Docker = {
Config: require('./../../../Docker.Config.js'),
Service: {
Start: require("./../../Docker.Service.Start"),
AI: {
Diffusions: {
STABLE_DIFFUSION: (serviceName, socketPort, gpuAcceleration = false ) => {
serviceName = Security.String(serviceName);
socketPort = Security.Integer(socketPort);
Security.Boolean(gpuAcceleration);
const networkName = Docker.Config._networkName
const dockerfileContent = [
`FROM python:3.10`,
`WORKDIR /app`,
`RUN apt-get update && apt-get install -y nano`,
`RUN pip install torch websockets diffusers transformers accelerate`,
`COPY server.py ./`,
`RUN python -c "from diffusers import StableDiffusionPipeline; StableDiffusionPipeline.from_pretrained('CompVis/stable-diffusion-v1-4')"`,
`CMD ["python", "server.py"]`
].join("\n");
let containerArgs = [
`-p${socketPort}:1337`,
`--network`, networkName
];
if (gpuAcceleration) {
containerArgs = containerArgs.concat([`--gpus`, `all`])
}
const contextPath = __dirname+`/../../../../resources/Docker.Service.AI.Diffusions/Docker.Service.AI.Diffusions.STABLE_DIFFUSION`;
return Docker.Service.Start(serviceName, dockerfileContent, contextPath, containerArgs);
}
},
}
}
}
module.exports = Docker.Service.AI.Diffusions.STABLE_DIFFUSION;