🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 使用 docker 镜像部署 cmswing 教程: ### 部署综述: - [docker 部署相关 PR 记录](https://github.com/arterli/CmsWing/pull/10/commits) - 关于 docker 部署的相关提交, 作了详细说明. - 参考 PR 记录, 应该能顺利完成部署工作. - 部署综述: 1. 使用 docker 部署. 2. 项目依赖2个容器: - 容器1: MySQL 数据库 - 容器2: 项目源码 3. 容器启动顺序: - 先启动 MySQL 数据库容器 - 再启动 cmswing server 容器 4. cmswing 源码需要修改的地方: - /CmsWing/src/common/config/db.js - 数据库的连接, 要改 `127.0.0.1` 为 `真实主机 IP`. - docker 容器连接时, 需要使用真实 IP. - /CmsWing/nginx.conf - 请修改 server / root 根路径为: `/web/cmswing/www;` - 这是 docker 容器里的项目路径. 5. 其他细节, 参考本文档具体步骤. - 核心启动命令: ``` # 启动 cmswing 依赖的 mysql 容器: docker run --name cms-db -p 33060:3306 -v /iDockerShare/www/db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password -d daocloud.io/library/mysql:5.7 # 启动 cmswing server 容器: docker run --name cms_server -v /iDockerShare/www:/web -p 6080:80 -d cmswing_base:0.4 # 查看启动状态: docker ps # 第一次启动 cmswing server 容器, 大概有10s 左右延迟, 服务才可正常访问. # 服务生效前访问, 出现 nginx 404错误. ``` - cmswing 镜像, 已构建并发布到阿里云: - [阿里云 docker 市场](https://dev.aliyun.com/list.html?namePrefix=cmswing) - cmswing 镜像拉取: ```bash # 公网地址:registry.cn-hangzhou.aliyuncs.com/docker_open/cmswing # 经典内网:registry-internal.cn-hangzhou.aliyuncs.com/docker_open/cmswing # 公网拉取: docker pull registry.cn-hangzhou.aliyuncs.com/docker_open/cmswing:0.4 # 阿里云内网拉取: docker pull registry-internal.cn-hangzhou.aliyuncs.com/docker_open/cmswing:0.4 ``` ### 部署Linux主机新建目录说明: - 部署linux主机, 需创建目录: - /iDockerShare/www/cmswing - /iDockerShare/www/db - 目录用于挂载到 docker 容器中, 供容器调用. ``` ➜ tree /iDockerShare -L 3 /iDockerShare ├── www │   ├── cmswing // 项目源码目录, 注意小写 │   │   ├── app │   │   ├── cmswing.sql // 数据库文件, 导入用. │   │   ├── docker │   │   ├── docker-compose.yml │   │   ├── Dockerfile │   │   ├── nginx.conf // 使用 docker 部署前, 要修改. 内有注释提示. │   │   ├── node_modules │   │   ├── package.json │   │   ├── pm2.json │   │   ├── README.md │   │   ├── runtime │   │   ├── src // 使用 docker 部署前, 要改 db.js 关于 MySQL 的参数 │   │   ├── view │   │   └── www │   ├── db // mysql 的共享目录 │   │   ├── auto.cnf │   │   ├── cmswing │   │   ├── cmswing-jl.sql // 自己的 sql 文件, 导入数据 │   │   ├── ib_buffer_pool │   │   ├── ibdata1 │   │   ├── ib_logfile0 │   │   ├── ib_logfile1 │   │   ├── ibtmp1 │   │   ├── mysql │   │   ├── performance_schema │   │   └── sys ``` ## 0. Docker 简介 & 安装: - [docker 官网](https://www.docker.com/) - 针对对 docker 不熟悉的用户, 熟悉者, 可跳过此部分. - docker 是一种容器技术, 方便实践 devops, 实现高效开发, 测试, 部署. ### 0.1 docker 参考文档: - 推荐主机环境: - Linux 内核 3.11.0 以上版本 - Ubuntu Trusty 14.04 (LTS) - 不建议使用 centos 主机. - docker 安装攻略: - 国外用户: 参考 docker 官方文档安装. - [安装文档 - 官方](https://docs.docker.com/engine/installation/) - [ubuntu 主机安装 docker](https://docs.docker.com/engine/installation/linux/ubuntulinux/) - [debian 主机安装 docker](https://docs.docker.com/engine/installation/linux/debian/) - [centos 主机安装 docker](https://docs.docker.com/engine/installation/linux/centos/) - 国内用户: 使用 daocloud 提供的一键安装脚本. - [daocloud 加速器](https://get.daocloud.io/) - 查看内核版本: ``` # 查看内核版本: $ uname -r 3.11.0-15-generic ``` ### 0.2 安装步骤(Linux): - 国内用户, 执行如下命令一键安装 docker: ``` curl -sSL https://get.daocloud.io/docker | sh ``` - 国外用户, 请参考上述 docker 官方文档. ## 1. MysQL 容器部署教程: ### 1.1 准备工作: - 拉取镜像: ``` docker pull daocloud.io/library/mysql:5.7 ``` ### 1.2 启动镜像: ``` # 后台方式: # - 端口映射: -p 33060:3306 # - 目录挂载: -v /iDockerShare/www/db:/var/lib/mysql # - 数据库 root 密码: -e MYSQL_ROOT_PASSWORD=your_password # - 此密码, 可自行设定 # - 此密码, 要与 /CmsWing/src/common/config/db.js 里保持一致 # - 后台运行: -d docker run --name cms-db -p 33060:3306 -v /iDockerShare/www/db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password -d daocloud.io/library/mysql:5.7 ``` ### 1.3 数据导入: - 将项目/CmsWing/cmswing.sql 文件拷贝到 /iDockerShare/www/db 下. - 然后终端方式进入容器里: 切换到 /var/lib/mysql 目录, 可以找到 cmswing.sql 文件. - 然后在容器中, 执行数据导入操作. ``` # 终端进入容器: docker exec -it cms-db bash ############### 容器中 start ############### # 后续操作, 都在容器中: ########################################### # 容器中操作: cd /var/lib/mysql # 先创建数据库: mysql -u root -p 输入数据库密码: (启动容器设定的) # 创建数据库: mysql > CREATE DATABASE cmswing; # 查看数据库: mysql > show databases; mysql > quit; # 再次连接数据库,并导入数据: mysql -u root -p -D cmswing < /var/lib/mysql/cmswing.sql 输入数据库密码: (启动容器设定的) ############### 容器中 end ############### # 退出容器: exit ``` ### 1.4 针对 cmswing 需要修改的地方: - 主机 IP: 120.76.134.101 - 修改文件: /CmsWing/src/common/config/db.js - 数据库连接 host 要改为真实 IP. ``` 'use strict'; /** * db config * @type {Object} */ export default { type: 'mysql', adapter: { mysql: { host: '120.76.134.101', // [docker 运行注意] 此处修改为真实主机 IP port: '33060', // [docker 运行注意] 端口映射 database: 'cmswing', user: 'root', password: 'your_password', // [数据库 root 密码] prefix: 'cmswing_', encoding: 'UTF8MB4_GENERAL_CI' }, mongo: { } } }; ``` - 待补充 ## 2. Cmswing 容器部署教程: - 特别注意: > 如果已通过如下命令, 从 `阿里云` 拉取了 `cmswing:0.4` 镜像. > 可直接跳过如下步骤 `2.1` 和 `2.2`, 直接看步骤`2.3`. > 写此部分文档时, 还未把 `cmswing:0.4` 发布到阿里云. > 考虑有些人可能会对构建脚本作修改, 自己手动构建, 故保留此部分. ``` # 公网拉取: docker pull registry.cn-hangzhou.aliyuncs.com/docker_open/cmswing:0.4 ``` ### 2.1 准备工作: - 再次提醒: 如已从阿里云拉取 `cmswing:0.4` 镜像, 可跳过此部分. #### 2.1.1 初始化部署目录: - 执行脚本: docker/prepare.sh #### 2.1.2 拉取基镜像(依赖): ``` # docker 镜像: # 拉取: docker pull daocloud.io/library/node:6.8.1 # 可不拉取: docker pull daocloud.io/library/node:4.6.1 ``` ### 2.2 构建 Docker 镜像: - 执行脚本: /CmsWing/docker/base/build_docker_image.sh - 查看镜像构建成功: ``` -> % docker images REPOSITORY TAG IMAGE ID CREATED SIZE cmswing_base 0.4 087db98d77c3 8 minutes ago 765.3 MB cmswing_base 0.1 9e559c325c5a 2 hours ago 765.3 MB ``` - 再次提醒: 如已从阿里云拉取 `cmswing:0.4` 镜像, 可跳过此部分, 直接到 步骤`2.3`. ### 2.3 由 docker 镜像, 启动容器: ``` # 访问端口映射 6080:80, 可以修改 docker run --name cms_server -v /iDockerShare/www:/web -p 6080:80 -d cmswing_base:0.4 ``` ### 2.4 查看容器启动成功: ``` -> % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7f350f021f06 cmswing_base:0.4 "sh /run.sh" 10 minutes ago Up 10 minutes 443/tcp, 3306/tcp, 8360/tcp, 33060/tcp, 0.0.0.0:6080->80/tcp cms-ng ``` ### 2.5 网站访问测试: 1. 初次启动 cmswing 容器, 需等待约10s 后, 网站服务才可用. 否则,访问出现 nginx 404错误. 2. 正常访问: `0.0.0.0:6080` (替换为自有主机 IP, 注意端口是 6080.) 3. 启动容器时的端口映射, 可以自行修改. 容器里的进程 和 宿主机, 是隔离开的, 互补影响. ### 2.6 容器调试方法: ``` # 交互模式运行容器: docker run -it --name cms_server1 -v /iDockerShare/www:/web -p 6080:80 cmswing_base:0.3 bash ```