CI: docker file
This commit is contained in:
39
Dockerfile
39
Dockerfile
@@ -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-alpine
|
||||||
ARG NODE_VERSION=node:16.14.2
|
# 1 - INSTALL
|
||||||
|
FROM $NODE_VERSION AS install
|
||||||
|
|
||||||
FROM $NODE_VERSION AS dependency-base
|
|
||||||
|
|
||||||
# create destination directory
|
|
||||||
RUN mkdir -p /app
|
RUN mkdir -p /app
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# copy the app, note .dockerignore
|
|
||||||
COPY package.json .
|
COPY package.json .
|
||||||
COPY package-lock.json .
|
COPY package-lock.json .
|
||||||
|
COPY .env .
|
||||||
RUN npm ci
|
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 . .
|
||||||
|
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
|
RUN npm run build
|
||||||
|
|
||||||
|
# 3 - PRODUCTION
|
||||||
FROM $NODE_VERSION AS 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
|
ENV NUXT_HOST=0.0.0.0
|
||||||
|
|
||||||
# Service version
|
|
||||||
ARG NUXT_APP_VERSION
|
ARG NUXT_APP_VERSION
|
||||||
ENV NUXT_APP_VERSION=${NUXT_APP_VERSION}
|
ENV NUXT_APP_VERSION=${NUXT_APP_VERSION}
|
||||||
|
|
||||||
ENV DATABASE_URL=file:./db.sqlite
|
|
||||||
|
|
||||||
# Run in production mode
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
# start the app
|
CMD source .env && npx prisma db push && node .output/server/index.mjs
|
||||||
CMD [ "node", "/app/.output/server/index.mjs" ]
|
|
||||||
|
Reference in New Issue
Block a user