Skip to content

Latest commit

 

History

History
152 lines (103 loc) · 3.41 KB

docker-ops.md

File metadata and controls

152 lines (103 loc) · 3.41 KB

这是通过 docker 运行项目的说明,如果你不使用 docker,请直接看 legacy-ops 文档。

数据库准备

关注公众号程序员白彬,回复关键词【博客数据库脚本】获取初始 MySQL 脚本。

将脚本放置在项目工程的 mysql/init-scripts 目录下。

|-- mysql
|   `-- init-scripts
|       |-- init.sql

Docker 开发环境

前端均支持 Docker 开发环境。

后端暂时只支持 express-server。nest-server 由于文件更新检测问题,暂时无法支持 Docker 开发环境,后续再投入时间研究补充。

构建镜像:

sh build-dev-images.sh

启动服务:

docker compose --env-file .env.docker.local -f compose-dev.yml up -d

其中的.env.docker.local文件内容参照下面内容:

MYSQL_ROOT_PASSWORD=xxx
MYSQL_DATABASE=blog_db

Docker 生产环境

  1. 构建镜像

使用单独的命令:

docker build --target vite-vue3-frontend -t fullstack-blog-vite-vue3 .

docker build --target nestjs-backend -t fullstack-blog-nest .

使用 docker compose

docker compose build
  1. 上传镜像
# 先登录
docker login --username=xxx registry.cn-hangzhou.aliyuncs.com

# 打 tag
docker tag fullstack-blog-vite-vue3 registry.cn-hangzhou.aliyuncs.com/tusi_personal/fullstack-blog-vite-vue3:3.0.0

docker tag fullstack-blog-nest registry.cn-hangzhou.aliyuncs.com/tusi_personal/fullstack-blog-nest:3.0.0

# 推送镜像
docker push registry.cn-hangzhou.aliyuncs.com/tusi_personal/fullstack-blog-vite-vue3:3.0.0

docker push registry.cn-hangzhou.aliyuncs.com/tusi_personal/fullstack-blog-nest:3.0.0
  1. 登录服务器

  2. 拉取镜像

docker login --username=xxx registry.cn-hangzhou.aliyuncs.com

docker pull registry.cn-hangzhou.aliyuncs.com/tusi_personal/fullstack-blog-vite-vue3:3.0.0

docker pull registry.cn-hangzhou.aliyuncs.com/tusi_personal/fullstack-blog-nest:3.0.0
  1. 【仅首次】准备项目资源文件

新建一个目录用于存放生产环境的 compose.yml 等资源文件,比如/home/docker/app/fullstack-blog

在这个目录下准备这些文件:

.
|-- nest-server
|   `-- .env.production.local
|-- compose.yml
`-- .env.docker.local

其中 compose.yml 内容参照项目中的 compose.yml。

.env.docker.local 文件参照下面内容:

DOCKER_REGISTRY=your_image_registry
DOCKER_NAMESPACE=your_registry_namespace
VITE_VUE3_VERSION=1.0.4
WEBPACK_VUE3_VERSION=3.7.1
NEST_SERVER_VERSION=3.5.0
MYSQL_DATABASE=blog_db
MYSQL_ROOT_PASSWORD=xxx

nest-server/.env.production.local文件是 Nest 后端服务的配置文件,内容参照下方:

MYSQL_HOST=mysql
MYSQL_PORT=3306
JWT_SECRET=xxx
[email protected]
EMAIL_PASS=xxx
BLOG_NAME=Tusi博客
AUTHOR_EMAIL=xxx
SITE_URL=https://blog.wbjiang.cn
OPENAI_API_KEY=xxx
WEB_SOCKET_WHITE_LIST=https://blog.wbjiang.cn
  1. 重新运行
docker compose --env-file .env.docker.local up -d

以上是分解步骤,相关命名以你的项目实际情况为准。

以上过程也可以由 CI/CD 完成,具体见 .github/workflows 目录。

本地测试生产环境 Docker 镜像

  1. 打镜像
docker compose --env-file .env.docker.local -f compose-prod-local.yml build
  1. 运行镜像测试
docker compose --env-file .env.docker.local -f compose-prod-local.yml up -d