29 lines
887 B
JavaScript
29 lines
887 B
JavaScript
const fs = require('fs').promises
|
|
const { streamEvents, docker } = require('../libs/docker')
|
|
|
|
async function buildImage (configuration) {
|
|
let dockerFile = `
|
|
# build
|
|
FROM node:lts
|
|
WORKDIR /usr/src/app
|
|
COPY package*.json .
|
|
`
|
|
if (configuration.build.command.installation) {
|
|
dockerFile += `RUN ${configuration.build.command.installation}
|
|
`
|
|
}
|
|
dockerFile += `COPY . .
|
|
RUN ${configuration.build.command.build}`
|
|
|
|
await fs.writeFile(`${configuration.general.workdir}/Dockerfile`, dockerFile)
|
|
const stream = await docker.engine.buildImage(
|
|
{ src: ['.'], context: configuration.general.workdir },
|
|
{ t: `${configuration.build.container.name}:${configuration.build.container.tag}` }
|
|
)
|
|
await streamEvents(stream, configuration)
|
|
}
|
|
|
|
module.exports = {
|
|
buildImage
|
|
}
|