diff --git a/Dockerfile b/Dockerfile index 9f01411..12945cf 100644 --- a/Dockerfile +++ b/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 +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