diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2963048 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +dist +node_modules +scripts +.git +.gitea +.gitignore +README.md \ No newline at end of file diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 5555485..00397cc 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -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 }} \ No newline at end of file + docker service update --image ${{ env.docker_name }}:latest ${{ env.deploy_name }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index b711405..27f7f54 100644 --- a/Dockerfile +++ b/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" ] diff --git a/package.json b/package.json index 0b586f0..da4cbff 100644 --- a/package.json +++ b/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", diff --git a/src/main.ts b/src/main.ts index 51d1ed9..d27fd8f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -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';