CI: docker file

This commit is contained in:
valere
2023-08-23 12:40:43 +02:00
parent b75c6c2d3f
commit fd69d613b1

View File

@@ -1,39 +1,40 @@
# see https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
ARG NODE_VERSION=node:16.14.2
ARG NODE_VERSION=node:16.14.2-alpine
# 1 - INSTALL
FROM $NODE_VERSION AS install
FROM $NODE_VERSION AS dependency-base
# create destination directory
RUN mkdir -p /app
WORKDIR /app
# copy the app, note .dockerignore
COPY package.json .
COPY package-lock.json .
COPY .env .
RUN npm ci
FROM dependency-base AS production-base
# 2 - CONFIGURE
FROM install AS configure
# build will also take care of building
# if necessary
COPY . .
COPY .env .
RUN sed -i "s|sqlite|postgresql|g" prisma/schema.prisma
RUN source .env && sed -i "s|DATABASE_URL=.*|DATABASE_URL=postgresql://$NAME_DB:$PASSWORD_DB@evilspins-db/$NAME_DB?schema=public|g" .env
# avoid conflict with nuxt build:
RUN sed -i "s|PORT=.*||g" .env
RUN npm run build
# 3 - PRODUCTION
FROM $NODE_VERSION AS production
COPY --from=production-base /app/.output /app/.output
WORKDIR /app
COPY --from=install /app/node_modules /app/node_modules
COPY --from=configure /app /app
RUN cp /app/.env /app/.output/server/
# Service hostname
ENV NUXT_HOST=0.0.0.0
# Service version
ARG NUXT_APP_VERSION
ENV NUXT_APP_VERSION=${NUXT_APP_VERSION}
ENV DATABASE_URL=file:./db.sqlite
# Run in production mode
ENV NODE_ENV=production
# start the app
CMD [ "node", "/app/.output/server/index.mjs" ]
CMD source .env && npx prisma db push && node .output/server/index.mjs