Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

docker部署

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登录步骤:

  1. 通过 portainer 进入mysql容器指令维护模式
  2. 登录mysql -uroot -p密码初始为
  3. 修改或创建
-- 修改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 避免容器删除导致配置丢失,

  • 挂载具体操作步骤:
  1. 通过上面的脚本创建创建一个初始化容器
  2. 通过 docker cp nginx:/etc/nginx /data/
  3. 通过 portainer 管理工具删除刚创建好的 nginx 容器,
  4. 再执行上面的脚本,注意:需要增加 -v /data/nginx:/etc/nginx 目录挂载

nginx.conf配置

参考 Nnginx代理配置 章节