diff --git a/backend/Dockerfile b/backend/Dockerfile index 23300e34..86c3d71b 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -3,15 +3,16 @@ FROM node:20-alpine3.16 AS backend-build ENV TZ="Europe/Helsinki" WORKDIR /usr/src/app - RUN mkdir -p /usr/src/app/frontend/src/validators -COPY frontend/src/backendTypes.d.ts /usr/src/app/frontend/src/backendTypes.d.ts -COPY frontend/src/types.ts /usr/src/app/frontend/src/types.ts -COPY frontend/src/validators /usr/src/app/frontend/src/validators -COPY backend/package.json backend/ -COPY backend/package-lock.json backend/ -COPY backend/prisma backend +USER node + +COPY --chown=node frontend/src/backendTypes.d.ts /usr/src/app/frontend/src/backendTypes.d.ts +COPY --chown=node frontend/src/types.ts /usr/src/app/frontend/src/types.ts +COPY --chown=node frontend/src/validators /usr/src/app/frontend/src/validators +COPY --chown=node backend/package.json backend/ +COPY --chown=node backend/package-lock.json backend/ +COPY --chown=node backend/prisma backend ENV NODE_ENV=production @@ -19,22 +20,26 @@ WORKDIR /usr/src/app/backend RUN npm ci -COPY backend . +COPY --chown=node backend . RUN npm run prisma -RUN rm -rf build RUN npm run build + # NOTE: Has to be alpine3.16 because newer versions have changed a dependency, causing Prisma to fail FROM node:20-alpine3.16 AS node-run +# following mkdir needs root (for some reason) RUN mkdir -p /usr/src/app/backend/backend/prisma -WORKDIR /usr/src/app/backend +RUN chown node:node /usr/src/app -R -COPY --from=backend-build /usr/src/app/frontend/src/backendTypes.d.ts ../frontend/src/backendTypes.d.ts -COPY --from=backend-build /usr/src/app/frontend/src/types.ts ../frontend/src/types.ts -COPY --from=backend-build /usr/src/app/backend/build . -COPY --from=backend-build /usr/src/app/backend/node_modules ./node_modules -COPY --from=backend-build /usr/src/app/backend/prisma ./backend/prisma +WORKDIR /usr/src/app/backend +USER node + +COPY --from=backend-build --chown=node /usr/src/app/frontend/src/backendTypes.d.ts ../frontend/src/backendTypes.d.ts +COPY --from=backend-build --chown=node /usr/src/app/frontend/src/types.ts ../frontend/src/types.ts +COPY --from=backend-build --chown=node /usr/src/app/backend/build . +COPY --from=backend-build --chown=node /usr/src/app/backend/node_modules ./node_modules +COPY --from=backend-build --chown=node /usr/src/app/backend/prisma ./backend/prisma EXPOSE 4000 ENV NODE_ENV=production diff --git a/docker-compose.anon.yml b/docker-compose.anon.yml index ddd41d46..ef06f6bf 100644 --- a/docker-compose.anon.yml +++ b/docker-compose.anon.yml @@ -2,25 +2,20 @@ services: frontend: container_name: nowdb-frontend-anon - image: node:20-alpine3.16 - volumes: - - ./frontend/:/usr/src/app + build: + context: ./frontend + dockerfile: Dockerfile ports: - 127.0.0.1:5173:5173 env_file: .anon.env - command: > - sh -c "cd /usr/src/app && npm ci && npm run dev -- --host" backend: container_name: nowdb-backend-anon - image: node:20-alpine3.16 env_file: .anon.env - volumes: - - ./backend/:/usr/src/app/backend/ - - ./frontend/src/:/usr/src/app/frontend/src/ ports: - 127.0.0.1:4000:4000 - command: > - sh -c "cd /usr/src/app/backend && npm ci && npm run dev" + build: + context: . + dockerfile: ./backend/Dockerfile db-anon: container_name: nowdb-db-anon image: mariadb:11.4.3 diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 426ce8bc..e002f07b 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -9,14 +9,17 @@ ENV TZ="Europe/Helsinki" ENV VITE_BACKEND_URL=$BACKEND_URL ENV VITE_RUNNING_ENV=$RUNNING_ENV ENV VITE_ENABLE_WRITE=$ENABLE_WRITE +USER node + WORKDIR /app -COPY package.json ./ -COPY package-lock.json ./ + +COPY --chown=node package.json ./ +COPY --chown=node package-lock.json ./ RUN npm ci -COPY . . +COPY --chown=node . . RUN npm run build @@ -25,9 +28,10 @@ FROM node:20-alpine3.19 AS serve RUN npm install -g serve WORKDIR /app +USER node -COPY --from=build /app/dist /app +COPY --from=build --chown=node /app/dist /app EXPOSE 5173 -CMD ["serve", "-s", "/app", "-l", "5173"] \ No newline at end of file +CMD ["serve", "-s", "/app", "-l", "5173"]