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 ## 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) # Build the images (only allowed for maintainers)
docker compose -f docker-compose.prod.yml build docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml push docker compose -f docker-compose.prod.yml push
+6 -17
View File
@@ -1,26 +1,15 @@
# Base stage # Base stage
FROM node:20-alpine as base FROM node:20-alpine as build
WORKDIR /app WORKDIR /app
COPY package.json yarn.lock tsconfig.json ./ COPY package.json yarn.lock ./
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 app/package.json ./app/package.json COPY app/package.json ./app/package.json
COPY server/package.json ./server/package.json
RUN yarn install --frozen-lockfile RUN yarn install --frozen-lockfile
# Dev stage COPY tsconfig.json ./tsconfig.json
FROM base as dev COPY server ./server
WORKDIR /app/app COPY packages ./packages
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 app ./app COPY app ./app
RUN yarn workspace app build RUN yarn workspace app build
+5
View File
@@ -12,6 +12,11 @@ server {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 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/ { location /api-docs/ {
proxy_pass http://backend:3000; proxy_pass http://backend:3000;
} }
+4 -4
View File
@@ -9,7 +9,7 @@ services:
dockerfile: app/Dockerfile dockerfile: app/Dockerfile
target: prod target: prod
networks: networks:
internal: - internal
ports: ports:
- 8080:80 - 8080:80
@@ -31,7 +31,7 @@ services:
- ./config:/app/config - ./config:/app/config
- ./quests:/app/quests:ro - ./quests:/app/quests:ro
env_file: env_file:
- .env - .env.prod
environment: environment:
- DOCKER_NETWORK=linux-odyssey-players - DOCKER_NETWORK=linux-odyssey-players
- BACKEND_URL=http://backend:3000 - BACKEND_URL=http://backend:3000
@@ -51,7 +51,7 @@ services:
ports: ports:
- '3001:3001' - '3001:3001'
env_file: env_file:
- .env - .env.prod
db: db:
image: mongo:6 image: mongo:6
@@ -64,7 +64,7 @@ services:
- mongo:/data/db - mongo:/data/db
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
env_file: env_file:
- .env - .env.prod
base: base:
image: linuxodyssey/quest-base image: linuxodyssey/quest-base
+7 -6
View File
@@ -1,19 +1,20 @@
FROM node:20-alpine as build FROM node:20-alpine as build
WORKDIR /app 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/analytics/package.json ./packages/analytics/package.json
COPY packages/models/package.json ./packages/models/package.json
RUN yarn install --frozen-lockfile RUN yarn install --frozen-lockfile
COPY tsconfig.json ./tsconfig.json
COPY packages ./packages
ENV HOST=0.0.0.0 ENV HOST=0.0.0.0
ENV PORT=3001 ENV PORT=3001
EXPOSE 3001 EXPOSE 3001
# Production stage # Production stage
FROM build as prod FROM node:20-alpine as prod
COPY packages/analytics ./packages/analytics COPY --from=build /app/packages/analytics ./packages/analytics
COPY packages/models ./packages/models
ENV NODE_ENV=production ENV NODE_ENV=production
WORKDIR /app/packages/analytics WORKDIR /app/packages/analytics
RUN yarn build
CMD [ "yarn", "start" ] CMD [ "yarn", "start" ]
+17 -30
View File
@@ -1,41 +1,28 @@
FROM node:20-alpine AS build FROM node:20-alpine AS build
WORKDIR /app WORKDIR /app
COPY ./package.json yarn.lock tsconfig.json ./ COPY ./package.json yarn.lock ./
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 server/package.json ./server/package.json COPY server/package.json ./server/package.json
RUN yarn install RUN yarn install
# Install docker cli # Install docker cli
COPY --from=docker:dind /usr/local/bin/docker /usr/local/bin/ 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 HOST=0.0.0.0
ENV PORT=3000 ENV PORT=3000
EXPOSE 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, "skipLibCheck": true,
"sourceMap": true, "sourceMap": true,
"baseUrl": "." "baseUrl": "."
} },
"exclude": ["node_modules", "dist", "*.test.ts"]
} }