feat: 优化docker配置
parent
277601fdf9
commit
d161435bc2
|
|
@ -0,0 +1,7 @@
|
||||||
|
dist
|
||||||
|
node_modules
|
||||||
|
scripts
|
||||||
|
.git
|
||||||
|
.gitea
|
||||||
|
.gitignore
|
||||||
|
README.md
|
||||||
|
|
@ -11,7 +11,7 @@ on:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
docker_host: ${{ secrets.DOCKER_REGISTRY }}
|
docker_host: ${{ secrets.DOCKER_REGISTRY }}
|
||||||
docker_image: ${{ secrets.DOCKER_REGISTRY }}/${{ gitea.repository }}
|
docker_name: ${{ secrets.DOCKER_REGISTRY }}/${{ gitea.repository }}
|
||||||
docker_user: ${{ secrets.DOCKER_USERNAME }}
|
docker_user: ${{ secrets.DOCKER_USERNAME }}
|
||||||
docker_pass: ${{ secrets.DOCKER_PASSWORD }}
|
docker_pass: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
deploy_host: ${{ secrets.DEPLOY_HOSTNAME }}
|
deploy_host: ${{ secrets.DEPLOY_HOSTNAME }}
|
||||||
|
|
@ -29,23 +29,10 @@ jobs:
|
||||||
- name: 检出代码
|
- name: 检出代码
|
||||||
id: checkout
|
id: checkout
|
||||||
uses: https://gitea.com/actions/checkout@v3
|
uses: https://gitea.com/actions/checkout@v3
|
||||||
|
|
||||||
# - name: 设置环境
|
|
||||||
# uses: https://gitea.com/actions/setup-node@v2
|
|
||||||
|
|
||||||
# - name: 安装依赖
|
|
||||||
# run: |
|
|
||||||
# npm install --registry https://registry.npmmirror.com/
|
|
||||||
|
|
||||||
# - name: 构建产物
|
|
||||||
# run: npm run build
|
|
||||||
|
|
||||||
# - name: 打印目录
|
|
||||||
# run: ls ./dist
|
|
||||||
|
|
||||||
- name: 构建镜像
|
- name: 构建镜像
|
||||||
run: |
|
run: |
|
||||||
docker build -t ${{ env.docker_image }}:latest .
|
docker build -t ${{ env.docker_name }}:latest .
|
||||||
|
|
||||||
- name: 登陆镜像
|
- name: 登陆镜像
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -54,7 +41,7 @@ jobs:
|
||||||
- name: 推送镜像
|
- name: 推送镜像
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
docker push ${{ env.docker_image }}:latest
|
docker push ${{ env.docker_name }}:latest
|
||||||
|
|
||||||
- name: 更新服务
|
- name: 更新服务
|
||||||
uses: http://git.dev.juetan.cn/mirror/ssh-action@v1.0.0
|
uses: http://git.dev.juetan.cn/mirror/ssh-action@v1.0.0
|
||||||
|
|
@ -65,4 +52,4 @@ jobs:
|
||||||
password: ${{ env.deploy_pass }}
|
password: ${{ env.deploy_pass }}
|
||||||
script: |
|
script: |
|
||||||
docker service ls | grep -q ${{ env.deploy_name }} || exit 0
|
docker service ls | grep -q ${{ env.deploy_name }} || exit 0
|
||||||
docker service update --image ${{ env.docker_image }}:latest ${{ env.deploy_name }}
|
docker service update --image ${{ env.docker_name }}:latest ${{ env.deploy_name }}
|
||||||
46
Dockerfile
46
Dockerfile
|
|
@ -1,37 +1,19 @@
|
||||||
FROM node:18-alpine As development
|
FROM node:18-alpine As dev
|
||||||
|
WORKDIR /app
|
||||||
WORKDIR /usr/src/app
|
COPY package*.json .
|
||||||
|
RUN npm install
|
||||||
COPY --chown=node:node package*.json ./
|
COPY . .
|
||||||
|
RUN npm run build && npm prune --production
|
||||||
RUN npm ci
|
|
||||||
|
|
||||||
COPY --chown=node:node . .
|
|
||||||
|
|
||||||
USER node
|
|
||||||
|
|
||||||
FROM node:18-alpine As build
|
FROM node:18-alpine As build
|
||||||
|
WORKDIR /app
|
||||||
WORKDIR /usr/src/app
|
|
||||||
|
|
||||||
COPY --chown=node:node package*.json ./
|
|
||||||
|
|
||||||
COPY --chown=node:node --from=development /usr/src/app/node_modules ./node_modules
|
|
||||||
|
|
||||||
COPY --chown=node:node . .
|
|
||||||
|
|
||||||
RUN npm run build
|
|
||||||
|
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
|
COPY --from=dev /app/content/ ./content/
|
||||||
|
COPY --from=dev /app/dist/ ./dist/
|
||||||
|
COPY --from=dev /app/node_modules/ ./node_modules/
|
||||||
|
COPY --from=dev /app/.env ./
|
||||||
|
COPY --from=dev /app/package.json ./
|
||||||
|
|
||||||
RUN npm ci --only=production && npm cache clean --force
|
EXPOSE 3030
|
||||||
|
CMD [ "node", "./dist/main.js" ]
|
||||||
USER node
|
|
||||||
|
|
||||||
FROM node:18-alpine As production
|
|
||||||
|
|
||||||
COPY --chown=node:node --from=build /usr/src/app/node_modules ./node_modules
|
|
||||||
COPY --chown=node:node --from=build /usr/src/app/dist ./dist
|
|
||||||
|
|
||||||
CMD [ "node", "dist/main.js" ]
|
|
||||||
|
|
||||||
|
|
|
||||||
18
package.json
18
package.json
|
|
@ -48,10 +48,18 @@
|
||||||
"winston": "^3.10.0",
|
"winston": "^3.10.0",
|
||||||
"nodemailer": "^6.9.5",
|
"nodemailer": "^6.9.5",
|
||||||
"mysql2": "^3.6.1",
|
"mysql2": "^3.6.1",
|
||||||
|
"@nestjs/cache-manager": "^2.1.0",
|
||||||
|
"cache-manager": "^5.2.3",
|
||||||
|
"cache-manager-redis-store": "^3.0.1",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"lodash-es": "^4.17.21",
|
||||||
|
"mockjs": "^1.1.0",
|
||||||
|
"multer": "1.4.5-lts.1",
|
||||||
|
"redis": "^4.6.8",
|
||||||
|
"sqlite3": "^5.1.6",
|
||||||
"winston-daily-rotate-file": "^4.7.1"
|
"winston-daily-rotate-file": "^4.7.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nestjs/cache-manager": "^2.1.0",
|
|
||||||
"@nestjs/cli": "^9.5.0",
|
"@nestjs/cli": "^9.5.0",
|
||||||
"@nestjs/schematics": "^9.2.0",
|
"@nestjs/schematics": "^9.2.0",
|
||||||
"@nestjs/testing": "^9.4.3",
|
"@nestjs/testing": "^9.4.3",
|
||||||
|
|
@ -67,21 +75,13 @@
|
||||||
"@types/uuid": "^9.0.3",
|
"@types/uuid": "^9.0.3",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||||
"@typescript-eslint/parser": "^5.62.0",
|
"@typescript-eslint/parser": "^5.62.0",
|
||||||
"cache-manager": "^5.2.3",
|
|
||||||
"cache-manager-redis-store": "^3.0.1",
|
|
||||||
"eslint": "^8.49.0",
|
"eslint": "^8.49.0",
|
||||||
"eslint-config-prettier": "^8.10.0",
|
"eslint-config-prettier": "^8.10.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"jest": "28.1.2",
|
"jest": "28.1.2",
|
||||||
"lodash": "^4.17.21",
|
|
||||||
"lodash-es": "^4.17.21",
|
|
||||||
"mockjs": "^1.1.0",
|
|
||||||
"multer": "1.4.5-lts.1",
|
|
||||||
"plop": "^3.1.2",
|
"plop": "^3.1.2",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"redis": "^4.6.8",
|
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"sqlite3": "^5.1.6",
|
|
||||||
"supertest": "^6.3.3",
|
"supertest": "^6.3.3",
|
||||||
"ts-jest": "28.0.5",
|
"ts-jest": "28.0.5",
|
||||||
"ts-loader": "^9.4.4",
|
"ts-loader": "^9.4.4",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { LoggerService } from '@/common/logger';
|
||||||
|
import { initSwagger } from '@/common/swagger';
|
||||||
|
import { ConfigService } from '@/config';
|
||||||
import { VersioningType } from '@nestjs/common';
|
import { VersioningType } from '@nestjs/common';
|
||||||
import { NestFactory } from '@nestjs/core';
|
import { NestFactory } from '@nestjs/core';
|
||||||
import { initSwagger } from '@/common/swagger';
|
|
||||||
import { LoggerService } from '@/common/logger';
|
|
||||||
import { ConfigService } from '@/config';
|
|
||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module';
|
||||||
import { ScanModule } from './utils/scan.module';
|
import { ScanModule } from './utils/scan.module';
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue