docker部署
安装docker
Debian\UOS\Ubuntu
#更新系统
sudo apt update
#安装docker-ce
sudo apt install docker-ce
CentOS
#更新系统
sudo yum update
#安装docker-ce
sudo yum install docker-ce
Tip
如果
docker-ce安装提示不存在包,可以安装docker-io一般安装好系统建议更换镜像源为国内地址,后面安装软件下载速度会快很多。如果docker安装软件下载很慢,可以更换国内镜像库,参考博文
- docker 国内镜像配置
#编辑docker配置文件
sudo vi /etc/docker/daemon.json
#增加下面json 配置
{
"registry-mirrors": [
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries": [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": false,
"experimental": true,
"log-driver":"json-file",
"log-opts": {"max-size":"100m", "max-file":"3"}
}
容器配置
创建统一的docker挂载目录,具体路径根据实际情况可以修改
#mysql文件,容器会自动生成
sudo mkdir /data/mysql
#复制打包好的jar包与项目文件夹
sudo mkdir /data/mcms
#代理配置
sudo mkdir /data/nginx
Tip
挂载目录常存放配置文件或常更新的文件,避免容器损坏导致数据文件或配置丢失
Docker网络
#创建docker网络,方便固定docker容器ip
docker network create \
--driver bridge \
--subnet 172.18.0.0/16 \
--gateway 172.18.0.1 \
--opt com.docker.network.bridge.name=docker1 \
--opt com.docker.network.driver.mtu=1450 \
ms
Tip
创建docker网络,并给容器设置docker网络ip后;如遇到自启动容器没有启动,比如mysql、portainer、nginx等一些设置restart=always的容器,请优先重启虚拟机
安装portainer
docker run --name portainer --network=ms --ip 172.18.0.98 -p 9000:9000 -d \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/portainer/portainer-ce:2.20.3
Tip
- 方便管理docker容器,不需要指令管理docker
- 如果出现
Failed loading environmentThe environment named local is unreachable,需要版本将 Docker 从 29.0.0 降级到 28.5.2 或者 将 portainer 降级到 2.20.2
安装MySQL
# 创建主目录
mkdir -p /data/mysql
# 创建子目录
mkdir -p /data/mysql/{conf,data,logs,backup}
# 设置目录权限
sudo chmod -R 755 /data/mysql
sudo chown -R 1001:1001 /data/mysql/data # MySQL容器用户通常是1001
# 创建 MySQL 配置文件
vim /data/mysql/conf/my.cnf
# 添加以下内容(自定义配置)
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
max_allowed_packet=256M
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
slow_query_log=ON
long_query_time=2
log_error_verbosity=3
bind-address=0.0.0.0
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
# 启动 MySQL 容器
docker run --network=ms --ip 172.18.0.3 --name mysql \
-e TZ="Asia/Shanghai" \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/logs:/var/log/mysql \
-v /data/mysql/backup:/backup \
--privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=root -d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.4.7 \
--sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" \
--lower-case-table-names=1 \
--symbolic-links=1 \
--skip-name-resolve=0 \
--max-connections=1000
开启远程root登录步骤:
- 通过 portainer 进入mysql容器指令维护模式
- 登录mysql -uroot -p密码初始为空
- 修改或创建
-- 修改root用户密码
alter user 'root'@'%' identified with mysql_native_password by 'root';
--MySQL 8 使用
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'root';
-- 刷新权限
FLUSH PRIVILEGES;
没有就创建一个
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '123456789';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
安装MCms
需要先将 mcms 打包好的文件上传到 /data/mcms 目录下,具体目录结构参考下图:

x86 脚本
#springboot2版本
docker run --name mcms -v /data/mcms:/home -w /home \
--network=ms --ip 172.18.0.50 -p 8080:8080 \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
--privileged=true mingsoft/java \
java -jar mcms.jar
#springboot3版本
docker run --name mcms -v /data/mcms:/home -w /home \
--network=ms --ip 172.18.0.50 -p 8080:8080 \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
--privileged=true docker.1ms.run/openjdk:17-jdk \
java -jar mcms.jar
arm64 脚本
docker run --name mcms -d -v /data/mcms:/home -w /home \
--network=ms --ip 172.18.0.50 -p 8080:8080 \
-w /home --restart=always --privileged=true \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
arm64v8/openjdk \
java -jar mcms.jar
Tip
记得修改
config目录下的数据库连接配置,数据库的ip地址为mysql容器的ip地址,如:上面mysql脚本的ip为172.18.0.3
安装Nginx
#注意:根据实际情况挂载mcms的运行目录,方便nginx实现文件代理
docker run --name nginx -d \
--network=ms --ip 172.18.0.10 -p 80:80 \
--restart=always --privileged=true \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx
Tip
建议挂载
-v /data/nginx:/etc/nginx避免容器删除导致配置丢失,
- 挂载具体操作步骤:
- 通过上面的脚本创建创建一个初始化容器
- 通过
docker cp nginx:/etc/nginx /data/- 通过
portainer管理工具删除刚创建好的nginx容器,- 再执行上面的脚本,注意:需要增加
-v /data/nginx:/etc/nginx目录挂载
nginx.conf配置
参考 Nnginx代理配置 章节