From dd2912219990ead3120084888a7abf5708d7f044 Mon Sep 17 00:00:00 2001 From: mozzie Date: Sun, 19 Mar 2023 23:36:08 +0800 Subject: [PATCH] feat: docker compose --- Dockerfile | 36 +++++++++++++++++++++++ apps/server/package.json | 5 ---- apps/server/src/config/config.prod.ts | 35 +++++++++++++++++++++++ apps/server/src/entity/user.entity.ts | 2 +- docker-compose.yml | 41 +++++++++++++++++++++++++++ package.json | 1 + 6 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9029074 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# 拉取的原镜像 +FROM node:16.19-alpine AS build + # 创建一个项目文件夹,可自定义 +WORKDIR /app +# 将本地文件复制到项目文件夹下 +COPY ./apps/server . +# 切换到淘宝镜像,安装依赖比较快 +RUN npm set registry https://registry.npm.taobao.org +# 安装依赖 +RUN npm install -g pnpm +RUN pnpm i +# 打包项目 +RUN pnpm build + + # 切换镜像文件, alpine镜像打包后更小 +FROM node:16.19-alpine +# 切换工作目录 +WORKDIR /app +# 将打包后的的文件复制到docker镜像里 +COPY --from=build /app/dist ./dist +COPY --from=build /app/src ./src +COPY --from=build /app/bootstrap.js ./ +COPY --from=build /app/package.json ./ + +# RUN apk add --no-cache tzdata + +ENV TZ="Asia/Shanghai" + +RUN npm set registry https://registry.npm.taobao.org + +# 安装工程依赖 +RUN npm install --production +# 设置暴露端口 +EXPOSE 7001 +# 启动 +CMD ["npm", "run", "start"] \ No newline at end of file diff --git a/apps/server/package.json b/apps/server/package.json index 5d772c9..56e5172 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -4,8 +4,6 @@ "private": true, "sideEffects": false, "dependencies": { - "@backset/ui": "workspace:^1.0.0", - "@backset/util": "workspace:^1.0.0", "@midwayjs/bootstrap": "^3.0.0", "@midwayjs/core": "^3.0.0", "@midwayjs/decorator": "^3.0.0", @@ -50,9 +48,6 @@ }, "scripts": { "start": "NODE_ENV=production node ./bootstrap.js", - "dev:be": "cross-env NODE_ENV=local midway-bin dev --ts", - "dev:fe": "cross-env RUNNING_ENV=dev webpack -w", - "build:fe": "cross-env RUNNING_ENV=prod webpack build", "cov": "midway-bin cov --ts", "lint": "mwts check", "lint:fix": "mwts fix", diff --git a/apps/server/src/config/config.prod.ts b/apps/server/src/config/config.prod.ts index e69de29..cd3a6cc 100644 --- a/apps/server/src/config/config.prod.ts +++ b/apps/server/src/config/config.prod.ts @@ -0,0 +1,35 @@ +import { MidwayAppInfo, MidwayConfig } from '@midwayjs/core'; + +export default (appInfo: MidwayAppInfo): MidwayConfig => { + return { + typeorm: { + dataSource: { + default: { + /** + * 单数据库实例 + */ + type: 'mysql', + host: 'mysql', + port: 3307, + username: 'backset', + password: 'backset', + database: 'backset', + synchronize: true, // 如果第一次使用,不存在表,有同步的需求可以写 true,注意会丢数据 + logging: false, + connectTimeout: 15 * 1000, + + // 扫描形式, 配置实体模型 entities: [Photo] + entities: ['**/entity/*.entity{.ts,.js}'], + }, + }, + }, + redis: { + client: { + host: 'redis', // Redis host + port: 26379, // Redis port + password: 'cr654654.', + db: 0, + }, + }, + } as MidwayConfig; +}; diff --git a/apps/server/src/entity/user.entity.ts b/apps/server/src/entity/user.entity.ts index 58e4c5a..2f2d0fb 100644 --- a/apps/server/src/entity/user.entity.ts +++ b/apps/server/src/entity/user.entity.ts @@ -17,7 +17,7 @@ export class User { @Column({ default: true }) user_status?: boolean; - @Column({ default: '用户' + Date.now() }) + @Column() display_name?: string; @Column({ default: '' }) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c29201c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3" + +services: + redis: + image: redis + container_name: redis-backset # 容器名称 + restart: always + ports: + - "26379:26379" + expose: + - "26379" + command: redis-server --requirepass "cr654654." --port 26379 + + mysql: + image: mysql:5.7.38 + container_name: mysql-backset # 容器名称 + restart: always + ports: + - "3307:3307" + expose: + - "3307" + environment: + MYSQL_DATABASE: "backset" + MYSQL_USER: "backset" + MYSQL_PASSWORD: "backset" + MYSQL_ROOT_PASSWORD: "root" + MYSQL_ROOT_HOST: "%" + MYSQL_TCP_PORT: 3307 + + web: + build: . + restart: always + container_name: backset-server # 容器名称 + ports: + - "7001:7001" + links: + - mysql:mysql + - redis:redis + depends_on: + - mysql + - redis diff --git a/package.json b/package.json index 6e8d4ed..5b3b6b1 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "dev:apps-admin": "cd apps/admin && pnpm dev", "build:web": "cd apps/web && pnpm build", "build:admin": "cd apps/admin && pnpm build", + "build:server": "cd apps/server && pnpm build", "build:pkgs": "pnpm build:ui && pnpm build:util", "build:ui": "cd packages/ui && pnpm build", "build:util": "cd packages/util && pnpm build"