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:
|
||||
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_pass: ${{ secrets.DOCKER_PASSWORD }}
|
||||
deploy_host: ${{ secrets.DEPLOY_HOSTNAME }}
|
||||
|
|
@ -29,23 +29,10 @@ jobs:
|
|||
- name: 检出代码
|
||||
id: checkout
|
||||
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: 构建镜像
|
||||
run: |
|
||||
docker build -t ${{ env.docker_image }}:latest .
|
||||
docker build -t ${{ env.docker_name }}:latest .
|
||||
|
||||
- name: 登陆镜像
|
||||
run: |
|
||||
|
|
@ -54,7 +41,7 @@ jobs:
|
|||
- name: 推送镜像
|
||||
shell: bash
|
||||
run: |
|
||||
docker push ${{ env.docker_image }}:latest
|
||||
docker push ${{ env.docker_name }}:latest
|
||||
|
||||
- name: 更新服务
|
||||
uses: http://git.dev.juetan.cn/mirror/ssh-action@v1.0.0
|
||||
|
|
@ -65,4 +52,4 @@ jobs:
|
|||
password: ${{ env.deploy_pass }}
|
||||
script: |
|
||||
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
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
COPY --chown=node:node package*.json ./
|
||||
|
||||
RUN npm ci
|
||||
|
||||
COPY --chown=node:node . .
|
||||
|
||||
USER node
|
||||
FROM node:18-alpine As dev
|
||||
WORKDIR /app
|
||||
COPY package*.json .
|
||||
RUN npm install
|
||||
COPY . .
|
||||
RUN npm run build && npm prune --production
|
||||
|
||||
FROM node:18-alpine As build
|
||||
|
||||
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
|
||||
|
||||
WORKDIR /app
|
||||
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
|
||||
|
||||
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" ]
|
||||
EXPOSE 3030
|
||||
CMD [ "node", "./dist/main.js" ]
|
||||
|
||||
|
|
|
|||
18
package.json
18
package.json
|
|
@ -48,10 +48,18 @@
|
|||
"winston": "^3.10.0",
|
||||
"nodemailer": "^6.9.5",
|
||||
"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"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/cache-manager": "^2.1.0",
|
||||
"@nestjs/cli": "^9.5.0",
|
||||
"@nestjs/schematics": "^9.2.0",
|
||||
"@nestjs/testing": "^9.4.3",
|
||||
|
|
@ -67,21 +75,13 @@
|
|||
"@types/uuid": "^9.0.3",
|
||||
"@typescript-eslint/eslint-plugin": "^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-config-prettier": "^8.10.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"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",
|
||||
"prettier": "^2.8.8",
|
||||
"redis": "^4.6.8",
|
||||
"source-map-support": "^0.5.21",
|
||||
"sqlite3": "^5.1.6",
|
||||
"supertest": "^6.3.3",
|
||||
"ts-jest": "28.0.5",
|
||||
"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 { NestFactory } from '@nestjs/core';
|
||||
import { initSwagger } from '@/common/swagger';
|
||||
import { LoggerService } from '@/common/logger';
|
||||
import { ConfigService } from '@/config';
|
||||
import { AppModule } from './app.module';
|
||||
import { ScanModule } from './utils/scan.module';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue