From a0c3bf206bafade744028078f2dcb7cc4f374f35 Mon Sep 17 00:00:00 2001 From: fantasticit Date: Tue, 28 Jun 2022 20:26:30 +0800 Subject: [PATCH] chore: update docker config --- .gitignore | 1 + Dockerfile | 11 +--- config/dev.yaml | 4 +- .../docker-prod-sample.yaml | 25 +++++--- docker-compose.yml | 64 +++++++++++-------- docker/start.sh | 8 +-- nginx.conf.bak => nginx.conf.sample | 0 7 files changed, 66 insertions(+), 47 deletions(-) rename docker/prod-sample.yaml => config/docker-prod-sample.yaml (74%) rename nginx.conf.bak => nginx.conf.sample (100%) diff --git a/.gitignore b/.gitignore index fb929853..44719a16 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ tsconfig.tsbuildinfo scripts/update.sh output +runtime diff --git a/Dockerfile b/Dockerfile index 95f5c87a..751a6b85 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,13 @@ FROM node:18-alpine as builder -COPY . /app/ +COPY . /app/ WORKDIR /app -ARG EIP=mrdoc.fun RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories RUN npm config set registry https://registry.npmmirror.com RUN npm i -g pm2 @nestjs/cli pnpm -RUN apk --no-cache add bash -RUN sed -i "s/localhost/$EIP/g" /app/docker/prod-sample.yaml -RUN cp -f /app/docker/prod-sample.yaml /app/config/prod.yaml +RUN apk --no-cache add bash RUN bash build-output.sh - FROM node:18-alpine as prod -LABEL maintainer="www.mrdoc.fun" ENV TZ=Asia/Shanghai COPY --from=builder /app/docker/* /app/docker/ COPY --from=builder /app/output/ /app/ @@ -22,7 +17,7 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositorie RUN npm config set registry https://registry.npmmirror.com RUN set -x \ && apk update \ - && apk add --no-cache tzdata redis \ + && apk add --no-cache tzdata redis \ && chmod +x /app/docker/start.sh \ && npm i -g pm2 @nestjs/cli pnpm \ && rm -rf /var/cache/apk/* diff --git a/config/dev.yaml b/config/dev.yaml index 730569d9..52fb7d98 100644 --- a/config/dev.yaml +++ b/config/dev.yaml @@ -37,8 +37,8 @@ server: db: mysql: host: '127.0.0.1' - username: 'root' - password: 'root' + username: 'think' + password: 'think' database: 'think' port: 3306 charset: 'utf8mb4' diff --git a/docker/prod-sample.yaml b/config/docker-prod-sample.yaml similarity index 74% rename from docker/prod-sample.yaml rename to config/docker-prod-sample.yaml index 27cae963..b3198df4 100644 --- a/docker/prod-sample.yaml +++ b/config/docker-prod-sample.yaml @@ -1,13 +1,13 @@ -# 生产环境docker示例配置 +# 开发环境配置 client: port: 5001 assetPrefix: '/' apiUrl: 'http://localhost:5002/api' - collaborationUrl: 'ws://localhost:5003/think/wss' + collaborationUrl: 'ws://localhost:5003' # 以下为页面 meta 配置 seoAppName: '云策文档' seoDescription: '云策文档是一款开源知识管理工具。通过独立的知识库空间,结构化地组织在线协作文档,实现知识的积累与沉淀,促进知识的复用与流通。' - seoKeywords: '云策文档,协作,文档,前端面试题,fantasticit,https://github.com/fantasticit/think' + seoKeywords: '云策文档,协作,文档,fantasticit,https://github.com/fantasticit/think' # 预先连接的来源,空格分割(比如图片存储服务器) dnsPrefetch: '//wipi.oss-cn-shanghai.aliyuncs.com' # 站点地址(如:http://think.codingit.cn/),一定要设置,否则会出现 cookie、跨域等问题 @@ -23,22 +23,31 @@ server: enableRateLimit: true # 是否限流 rateLimitWindowMs: 60000 # 限流时间 rateLimitMax: 1000 # 单位限流时间内单个 ip 最大访问数量 + email: # 邮箱服务,参考 http://help.163.com/09/1223/14/5R7P6CJ600753VB8.html?servCode=6010376 获取 SMTP 配置 + host: '' + port: 465 + user: '' + password: '' + admin: + name: 'sytemadmin' # 注意修改 + password: 'sytemadmin' # 注意修改 + email: 'sytemadmin@think.com' # 注意修改为真实邮箱地址 # 数据库配置 db: mysql: - host: 'mysql-with-think' - username: 'jonnyan404' - password: 'www.mrdoc.fun' + host: 'mysql-for-think' + username: 'think' + password: 'think' database: 'think' port: 3306 charset: 'utf8mb4' timezone: '+08:00' synchronize: true redis: - host: '127.0.0.1' + host: 'redis-for-think' port: '6379' - password: '' + password: 'root' # oss 文件存储服务 oss: diff --git a/docker-compose.yml b/docker-compose.yml index c776d794..0e4ea897 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,44 +1,58 @@ -version: "3" +version: '3' services: - thinkdoc: + think: build: context: . - args: - EIP: x.x.x.x # api接口IP,必须设置,可以是 IP 或者域名. image: think - container_name: thinkdoc - #restart: always + container_name: think volumes: - - /path/to/you/dir/config:/app/config # 请注意修改 /path/to/you/dir 为云策文档配置文件目录. - - /path/to/you/dir/static:/app/packages/server/static # 请注意修改 /path/to/you/dir 为云策文档附件存储目录. + - ./config:/app/config + - ./runtime/static:/app/packages/server/static environment: - TZ=Asia/Shanghai ports: - - "5001-5003:5001-5003" + - '5001-5003:5001-5003' depends_on: - mysql + - redis + networks: + - think mysql: image: mysql:5.7 - container_name: mysql-with-think - #restart: always + restart: always + container_name: mysql-for-think volumes: - - /path/to/you/dir/mysql:/var/lib/mysql # 请注意修改 /path/to/you/dir 为您要存储mysql数据的目录绝对路径. + - ./runtime/mysql:/var/lib/mysql environment: - TZ=Asia/Shanghai - - MYSQL_ROOT_PASSWORD=Jonnyan404! + - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=think - - MYSQL_USER=jonnyan404 - - MYSQL_PASSWORD=www.mrdoc.fun + - MYSQL_USER=think + - MYSQL_PASSWORD=think expose: - - "3306" + - '3306' ports: - - "63306:3306" # 如果不需要外部连接mysql,可注释此行+上一行. + - '3306:3306' command: - - "--character-set-server=utf8mb4" - - "--collation-server=utf8mb4_unicode_ci" -# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/ -#volumes: -# thinkdoc-data: -# driver: local -# mysql-data: -# driver: local + - '--character-set-server=utf8mb4' + - '--collation-server=utf8mb4_unicode_ci' + networks: + - think + redis: + image: redis:latest + restart: always + container_name: redis-for-think + command: > + --requirepass root + expose: + - '6379' + ports: + - '6379:6379' + volumes: + - ./runtime/redis:/data + privileged: true + networks: + - think +networks: + think: + driver: bridge diff --git a/docker/start.sh b/docker/start.sh index 60c3e2f2..4a488f1c 100644 --- a/docker/start.sh +++ b/docker/start.sh @@ -1,14 +1,14 @@ #!/bin/sh ### Author:jonnyan404 ### date:2022年5月22日 + CONFIG_FILE='/app/config/prod.yaml' if [ ! -f $CONFIG_FILE ]; then - echo "#####Generating configuration file#####" - cp /app/docker/prod-sample.yaml $CONFIG_FILE + cp -f /app/config/docker-prod-sample.yaml $CONFIG_FILE else - echo "#####Configuration file already exists#####" + echo "" fi -redis-server --daemonize yes + pnpm run pm2 pm2 logs diff --git a/nginx.conf.bak b/nginx.conf.sample similarity index 100% rename from nginx.conf.bak rename to nginx.conf.sample