36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import {parse, stringify} from 'yaml';
|
|
|
|
for await (const service of Deno.readDir('.')) {
|
|
if (service.isFile || !service.name.includes('-service')) continue;
|
|
|
|
const serviceFile = './' + service.name + '/';
|
|
const serviceName = service.name.replace('-service', '');
|
|
const port = await Deno.readTextFile(serviceFile + 'port');
|
|
const perms = (await Deno.readTextFile(serviceFile + 'perms')).split('\n');
|
|
await Deno.writeTextFile(serviceFile + 'Dockerfile', `
|
|
FROM denoland/deno:1.33.2
|
|
${port ? 'EXPOSE ' + port : ''}
|
|
|
|
WORKDIR /${serviceName}
|
|
|
|
ADD ${serviceFile} .
|
|
COPY ./deno.jsonc .
|
|
COPY ./secrets.json .
|
|
COPY ./key.txt .
|
|
ADD ./common ./common
|
|
ADD ./lib ./lib
|
|
ADD ./middleware ./middleware
|
|
|
|
CMD ["run", "${perms.join('", "')}", "main.ts"${port ? `, "${port}"` : ''}]
|
|
`);
|
|
|
|
const dockerCompose: any = parse(await Deno.readTextFile('./docker-compose.yml'));
|
|
dockerCompose['services'][serviceName] = {
|
|
build: {
|
|
context: "./",
|
|
dockerfile: serviceFile + 'Dockerfile'
|
|
}
|
|
}
|
|
|
|
await Deno.writeTextFile('./docker-compose.yml', stringify(dockerCompose))
|
|
} |