fix: dockerfile, production env settings

This commit is contained in:
Justin Lin committed 2025-04-26 16:38:32 +08:00
1 parent 3985d5d089
commit 6fe49c4f38
7 files changed
+52 -58

No files matched your search

+11
View File
@@ -163,6 +163,17 @@ Run Cypress in container, create brand-new containers along with it:
## Deployment
Create production env
cp .env.prod.sample .env.prod
Edit `.env.prod`
BASE_URL=https://yourdomain.com # IMPORTANT to make login work
SECRET_KEY=xxxx # Change it to something safe!
Start the service
# Build the images (only allowed for maintainers)
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml push
+6 -17
View File
@@ -1,26 +1,15 @@
# Base stage
FROM node:20-alpine as base
FROM node:20-alpine as build
WORKDIR /app
COPY package.json yarn.lock tsconfig.json ./
COPY packages/file-graph/package.json ./packages/file-graph/package.json
COPY packages/utils/package.json ./packages/utils/package.json
COPY packages/constants/package.json ./packages/constants/package.json
COPY packages/models/package.json ./packages/models/package.json
COPY package.json yarn.lock ./
COPY app/package.json ./app/package.json
COPY server/package.json ./server/package.json
RUN yarn install --frozen-lockfile
# Dev stage
FROM base as dev
WORKDIR /app/app
CMD [ "yarn", "dev:docker", "--host", "0.0.0.0" ]
# Build stage
FROM base as build
COPY packages/file-graph ./packages/file-graph
COPY packages/utils ./packages/utils
COPY packages/constants ./packages/constants
COPY packages/models ./packages/models
COPY tsconfig.json ./tsconfig.json
COPY server ./server
COPY packages ./packages
COPY app ./app
RUN yarn workspace app build
+5
View File
@@ -12,6 +12,11 @@ server {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /trpc/ {
proxy_pass http://backend:3000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /api-docs/ {
proxy_pass http://backend:3000;
}
+4 -4
View File
@@ -9,7 +9,7 @@ services:
dockerfile: app/Dockerfile
target: prod
networks:
internal:
- internal
ports:
- 8080:80
@@ -31,7 +31,7 @@ services:
- ./config:/app/config
- ./quests:/app/quests:ro
env_file:
- .env
- .env.prod
environment:
- DOCKER_NETWORK=linux-odyssey-players
- BACKEND_URL=http://backend:3000
@@ -51,7 +51,7 @@ services:
ports:
- '3001:3001'
env_file:
- .env
- .env.prod
db:
image: mongo:6
@@ -64,7 +64,7 @@ services:
- mongo:/data/db
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
env_file:
- .env
- .env.prod
base:
image: linuxodyssey/quest-base
+7 -6
View File
@@ -1,19 +1,20 @@
FROM node:20-alpine as build
WORKDIR /app
COPY ./package.json yarn.lock tsconfig.json ./
COPY ./package.json yarn.lock ./
COPY packages/analytics/package.json ./packages/analytics/package.json
COPY packages/models/package.json ./packages/models/package.json
RUN yarn install --frozen-lockfile
COPY tsconfig.json ./tsconfig.json
COPY packages ./packages
ENV HOST=0.0.0.0
ENV PORT=3001
EXPOSE 3001
# Production stage
FROM build as prod
COPY packages/analytics ./packages/analytics
COPY packages/models ./packages/models
FROM node:20-alpine as prod
COPY --from=build /app/packages/analytics ./packages/analytics
ENV NODE_ENV=production
WORKDIR /app/packages/analytics
RUN yarn build
CMD [ "yarn", "start" ]
+17 -30
View File
@@ -1,41 +1,28 @@
FROM node:20-alpine AS build
WORKDIR /app
COPY ./package.json yarn.lock tsconfig.json ./
COPY packages/file-graph/package.json ./packages/file-graph/package.json
COPY packages/utils/package.json ./packages/utils/package.json
COPY packages/models/package.json ./packages/models/package.json
COPY packages/constants/package.json ./packages/constants/package.json
COPY ./package.json yarn.lock ./
COPY server/package.json ./server/package.json
RUN yarn install
# Install docker cli
COPY --from=docker:dind /usr/local/bin/docker /usr/local/bin/
COPY server ./server
COPY packages ./packages
COPY tsconfig.json ./tsconfig.json
RUN yarn workspace server build
# Production
FROM node:20-alpine as prod
WORKDIR /app
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/server ./server
COPY ./quests ./quests
ENV NODE_ENV=production
WORKDIR /app/server
CMD [ "yarn", "start" ]
ENV HOST=0.0.0.0
ENV PORT=3000
EXPOSE 3000
# Production
FROM build as prod
COPY packages/file-graph ./packages/file-graph
COPY packages/utils ./packages/utils
COPY packages/models ./packages/models
COPY packages/constants ./packages/constants
COPY server ./server
COPY quests ./quests
ENV NODE_ENV=production
RUN yarn workspace server build
WORKDIR /app/server
CMD [ "yarn", "start" ]
# Development
FROM build as dev
RUN yarn install --frozen-lockfile
COPY server/nodemon.json ./server/nodemon.json
COPY tsconfig.json ./tsconfig.json
COPY server/tsconfig.json ./server/tsconfig.json
ENV NODE_ENV=development
CMD [ "yarn", "server" ]
+2 -1
View File
@@ -6,5 +6,6 @@
"skipLibCheck": true,
"sourceMap": true,
"baseUrl": "."
}
},
"exclude": ["node_modules", "dist", "*.test.ts"]
}