mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-05 19:20:12 +08:00
feat: refactor dockerfiles
* combine dev and prod into multi-stages dockerfile * replace node with node:20-alpine to reduce image size
This commit is contained in:
1 parent
625c1a80da
commit
579d53a273
10 files changed
+58
-66
No files matched your search
@@ -69,6 +69,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./server/Dockerfile
|
file: ./server/Dockerfile
|
||||||
|
target: prod
|
||||||
push: true
|
push: true
|
||||||
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:backend
|
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:backend
|
||||||
|
|
||||||
@@ -77,6 +78,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./app/Dockerfile
|
file: ./app/Dockerfile
|
||||||
|
target: prod
|
||||||
push: true
|
push: true
|
||||||
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:app
|
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:app
|
||||||
|
|
||||||
@@ -85,6 +87,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./packages/analytics/Dockerfile
|
file: ./packages/analytics/Dockerfile
|
||||||
|
target: prod
|
||||||
push: true
|
push: true
|
||||||
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:analytics
|
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:analytics
|
||||||
|
|
||||||
|
|||||||
+11
-4
@@ -1,5 +1,5 @@
|
|||||||
# Build stage
|
# Base stage
|
||||||
FROM node as build-stage
|
FROM node:20-alpine as base
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json yarn.lock ./
|
COPY package.json yarn.lock ./
|
||||||
COPY app/package.json ./app/package.json
|
COPY app/package.json ./app/package.json
|
||||||
@@ -7,14 +7,21 @@ COPY packages/file-graph/package.json ./packages/file-graph/package.json
|
|||||||
COPY packages/utils/package.json ./packages/utils/package.json
|
COPY packages/utils/package.json ./packages/utils/package.json
|
||||||
RUN yarn install --frozen-lockfile
|
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 app ./app
|
COPY app ./app
|
||||||
COPY packages/file-graph ./packages/file-graph
|
COPY packages/file-graph ./packages/file-graph
|
||||||
COPY packages/utils ./packages/utils
|
COPY packages/utils ./packages/utils
|
||||||
RUN yarn build
|
RUN yarn build
|
||||||
|
|
||||||
# Production stage
|
# Production stage
|
||||||
FROM nginx:stable-alpine as production-stage
|
FROM nginx:stable-alpine as prod
|
||||||
COPY --from=build-stage /app/app/dist /usr/share/nginx/html
|
COPY --from=build /app/app/dist /usr/share/nginx/html
|
||||||
COPY deployment/nginx.conf /etc/nginx/conf.d/default.conf
|
COPY deployment/nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
FROM node
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
COPY package.json yarn.lock ./
|
|
||||||
COPY app/package.json ./app/package.json
|
|
||||||
COPY packages/file-graph/package.json ./packages/file-graph/package.json
|
|
||||||
COPY packages/utils/package.json ./packages/utils/package.json
|
|
||||||
RUN yarn install --frozen-lockfile
|
|
||||||
|
|
||||||
WORKDIR /app/app
|
|
||||||
CMD [ "yarn", "dev:docker", "--host", "0.0.0.0" ]
|
|
||||||
@@ -5,6 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: app/Dockerfile
|
dockerfile: app/Dockerfile
|
||||||
|
target: prod
|
||||||
networks:
|
networks:
|
||||||
internal:
|
internal:
|
||||||
ports:
|
ports:
|
||||||
@@ -15,6 +16,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: server/Dockerfile
|
dockerfile: server/Dockerfile
|
||||||
|
target: prod
|
||||||
networks:
|
networks:
|
||||||
- internal
|
- internal
|
||||||
- players
|
- players
|
||||||
@@ -31,6 +33,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: packages/analytics/Dockerfile
|
dockerfile: packages/analytics/Dockerfile
|
||||||
|
target: prod
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: app/Dockerfile
|
dockerfile: app/Dockerfile
|
||||||
|
target: prod
|
||||||
networks:
|
networks:
|
||||||
internal:
|
internal:
|
||||||
ports:
|
ports:
|
||||||
@@ -29,6 +30,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: server/Dockerfile
|
dockerfile: server/Dockerfile
|
||||||
|
target: prod
|
||||||
depends_on:
|
depends_on:
|
||||||
- db-test
|
- db-test
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
+6
-3
@@ -5,7 +5,8 @@ services:
|
|||||||
- backend
|
- backend
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: app/Dockerfile.dev
|
dockerfile: app/Dockerfile
|
||||||
|
target: dev
|
||||||
ports:
|
ports:
|
||||||
- 5173:5173
|
- 5173:5173
|
||||||
networks:
|
networks:
|
||||||
@@ -18,7 +19,8 @@ services:
|
|||||||
- db
|
- db
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: server/Dockerfile.dev
|
dockerfile: server/Dockerfile
|
||||||
|
target: dev
|
||||||
networks:
|
networks:
|
||||||
- internal
|
- internal
|
||||||
- players
|
- players
|
||||||
@@ -43,7 +45,8 @@ services:
|
|||||||
analytics:
|
analytics:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: packages/analytics/Dockerfile.dev
|
dockerfile: packages/analytics/Dockerfile
|
||||||
|
target: dev
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -1,19 +1,25 @@
|
|||||||
FROM node
|
FROM node:20-alpine as build
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY ./package.json yarn.lock ./
|
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
|
COPY packages/models/package.json ./packages/models/package.json
|
||||||
RUN yarn install --frozen-lockfile --production
|
RUN yarn install --frozen-lockfile --production
|
||||||
|
|
||||||
COPY packages/analytics ./packages/analytics
|
|
||||||
COPY packages/models ./packages/models
|
|
||||||
|
|
||||||
WORKDIR /app/packages/analytics
|
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
|
||||||
ENV HOST=0.0.0.0
|
ENV HOST=0.0.0.0
|
||||||
ENV PORT=3001
|
ENV PORT=3001
|
||||||
EXPOSE 3001
|
EXPOSE 3001
|
||||||
|
|
||||||
|
# Production stage
|
||||||
|
FROM build as prod
|
||||||
|
COPY packages/analytics ./packages/analytics
|
||||||
|
COPY packages/models ./packages/models
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
WORKDIR /app/packages/analytics
|
||||||
CMD [ "yarn", "start" ]
|
CMD [ "yarn", "start" ]
|
||||||
|
|
||||||
|
# Development stage
|
||||||
|
FROM build as dev
|
||||||
|
RUN yarn install --frozen-lockfile
|
||||||
|
WORKDIR /app/packages/analytics
|
||||||
|
ENV NODE_ENV=development
|
||||||
|
CMD [ "yarn", "dev" ]
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
FROM node
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
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
|
|
||||||
|
|
||||||
WORKDIR /app/packages/analytics
|
|
||||||
|
|
||||||
ENV NODE_ENV=development
|
|
||||||
ENV HOST=0.0.0.0
|
|
||||||
ENV PORT=3001
|
|
||||||
EXPOSE 3001
|
|
||||||
|
|
||||||
CMD [ "yarn", "dev" ]
|
|
||||||
+19
-6
@@ -1,4 +1,4 @@
|
|||||||
FROM node
|
FROM node:20-alpine AS build
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY ./package.json yarn.lock ./
|
COPY ./package.json yarn.lock ./
|
||||||
@@ -8,17 +8,30 @@ COPY packages/utils/package.json ./packages/utils/package.json
|
|||||||
COPY packages/models/package.json ./packages/models/package.json
|
COPY packages/models/package.json ./packages/models/package.json
|
||||||
RUN yarn install --frozen-lockfile --production
|
RUN yarn install --frozen-lockfile --production
|
||||||
|
|
||||||
|
ENV HOST=0.0.0.0
|
||||||
|
ENV PORT=3000
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Production
|
||||||
|
FROM build as prod
|
||||||
|
|
||||||
COPY ./server ./server
|
COPY ./server ./server
|
||||||
COPY packages/file-graph ./packages/file-graph
|
COPY packages/file-graph ./packages/file-graph
|
||||||
COPY packages/utils ./packages/utils
|
COPY packages/utils ./packages/utils
|
||||||
COPY packages/models ./packages/models
|
COPY packages/models ./packages/models
|
||||||
COPY quests ./quests
|
COPY quests ./quests
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
WORKDIR /app/server
|
WORKDIR /app/server
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
|
||||||
ENV HOST=0.0.0.0
|
|
||||||
ENV PORT=3000
|
|
||||||
EXPOSE 3000
|
|
||||||
|
|
||||||
CMD [ "yarn", "start" ]
|
CMD [ "yarn", "start" ]
|
||||||
|
|
||||||
|
# Development
|
||||||
|
FROM build as dev
|
||||||
|
|
||||||
|
RUN yarn install --frozen-lockfile
|
||||||
|
|
||||||
|
ENV NODE_ENV=development
|
||||||
|
|
||||||
|
CMD [ "yarn", "server" ]
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
FROM node
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
COPY package.json yarn.lock ./
|
|
||||||
COPY server/package.json ./server/package.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
|
|
||||||
RUN yarn install --frozen-lockfile
|
|
||||||
|
|
||||||
COPY server/nodemon.json ./server/nodemon.json
|
|
||||||
|
|
||||||
ENV NODE_ENV=development
|
|
||||||
ENV HOST=0.0.0.0
|
|
||||||
ENV PORT=3000
|
|
||||||
EXPOSE 3000
|
|
||||||
|
|
||||||
CMD [ "yarn", "server" ]
|
|
||||||
Reference in new issue
Block a user