mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 03:20:12 +08:00
fix: dockerfile, production env settings
This commit is contained in:
1 parent
3985d5d089
commit
6fe49c4f38
7 files changed
+52
-58
No files matched your search
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -6,5 +6,6 @@
|
|||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"baseUrl": "."
|
"baseUrl": "."
|
||||||
}
|
},
|
||||||
|
"exclude": ["node_modules", "dist", "*.test.ts"]
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user