目录
一,环境准备
1.1.安装docker
1.2.配置镜像就加速器
二,docker部署
2.1.创建网络
编辑
2.2.安装redis
2.3.安装MySQL
2.4.安装JDK,TomCat及部署后台项目
2.5.安装Nginx及配置静态资源
一,环境准备
1.1.安装docker
安装yum-util, 该包提供yum-config-manager功能
yum install -y yum-utils
设置docker源(阿里仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker, yum install docker-ce-版本号
yum install docker-ce-18.06.3.ce
查看docker版本号,验证
docker version
启动docker
systemctl start docker
设置开机启动
systemctl enable docker
1.2.配置镜像就加速器
默认的情况下docker会从docker hub中查找或下载镜像,在国内会比较慢。可以使用阿里的镜像加速器来提高速度。
具体操作步骤如下:
首先需要有一个淘宝或支付宝的账号,登录阿里云阿里云-计算,为了无法计算的价值 (aliyun.com)https://www.aliyun.com/
查看阿里镜像加速器地址
cat /etc/docker/daemon.json
这样就配置好了
二,docker部署
2.1.创建网络
# 搭建net-ry局域网,用于部署若依项目
docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1
【注】
关闭宿主机的防火墙,否者容器内部的MySQL、redis等服务,外部访问不了;开放端口3306、6379端口也没用
查看防火墙状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
关闭防火墙后必须重启docker,否者出现如下错误
docker: Error response from daemon: driver failed programming external connectivity on endpoint ruoyi-admin (399a34630e6ef8e4ed7cf20d46b9654c8d535d0fe44ceadebf8bd605d3da35b8): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.68.0.4:8080 ! -i br-c34635070c6f: iptables: No chain/target/match by that name.
重启docker
systemctl restart docker
2.2.安装redis
# 创建目录
mkdir -p /data/redis/{conf,data}
redis.conf修改
1. 允许redis外地连接
#bind 127.0.0.1改成为 bind 0.0.0.0
2. 开启redis验证(可选)
requirepass sasa
3. 开启redis数据持久化(可选)
appendonly yes
上传redis.conf文件到/data/redis/conf文件夹中
启动容器服务
docker run -itd --name zking-redis -p 6379:6379 \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
--privileged=true --restart=always \
--network net-ry redis \
redis-server /etc/redis/redis.conf
【解释】
-itd
:以交互模式运行容器,并分配伪终端,然后将其与终端分离。--name zking-redis
:将容器命名为"zking-redis"。-p 6379:6379
:将主机的6379端口映射到容器中的6379端口,用于Redis。-v /data/redis/conf/redis.conf:/etc/redis/redis.conf
:将主机上的Redis配置文件挂载到容器中。-v /data/redis/data:/data
:将数据卷从主机挂载到容器中。--privileged=true
:赋予容器扩展权限。--restart=always
:如果容器停止,则自动重新启动。--network net-ry
:将容器连接到名为"net-ry"的特定Docker网络。redis
:指定用于容器的Docker镜像。redis-server /etc/redis/redis.conf
:使用提供的配置文件运行Redis服务器。
这样redis就准备好了
测试
进入刚刚创建好的redis容器
docker exec -it a2efbc3 /bin/bash
使用whereis查找redis-cli的位置
进入该目录
cd /usr/local/bin
查看该目录
ls
执行redis-cli进入redis
执行ping如果是PONG就表示服务正常
到这里redis就算是安装好了
2.3.安装MySQL
# 创建文件夹
mkdir -p /data/mysql/{conf,data}
上传my.cnf文件到/data/mysql/conf文件夹中
启动容器服务
docker run -d --name zking-mysql --network net-ry \
-v /data/mysql/conf/my.cnf:/etc/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
--privileged=true --restart=always \
-e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \
mysql/mysql-server:5.7
【解释】
这个命令是在Docker中运行一个MySQL 5.7容器,并命名为zking-mysql。
容器将连接到net-ry网络。
MySQL配置文件my.cnf将从主机的/data/mysql/conf目录挂载到容器的/etc/my.cnf目录。
MySQL数据目录将从主机的/data/mysql/data目录挂载到容器的/var/lib/mysql目录。
容器将以特权模式运行,并且设置为总是重启。
MySQL的root密码将设置为sasa,并且容器的3306端口将映射到主机的3306端口。
在这个命令中
-d标志表示容器将在后台运行。-v标志用于挂载卷。
--privileged=true表示容器将以特权模式运行,
--restart=always表示容器将总是重启。
-e标志用于设置环境变量,这里设置了MySQL的root密码。
-p标志用于将容器端口映射到主机端口
进入MySQL容器
docker exec -it ba90df /bin/bash
给用户赋予外部访问权限
登录MySQL
mysql -u root -p
密码就是上面配置好的
执行以下代码赋予权限
grant all privileges on *.* to root@'%' identified by 'sasa' with grant option;
刷新权限
flush privileges;
使用数据库管理工具测试一下
成功就表示配置完成了
初始化数据库脚本
根据项目的配置创建数据库
到此MySQL就准备完成了
2.4.安装JDK,TomCat及部署后台项目
创建项目部署目录
mkdir ruoyi-admin
进入该目录
cd ruoyi-admin
上传后台jar包及dockerfile
ruoyi-admin为镜像名称,开始制作镜像
docker build -t ruoyi-admin .
进入容器
docker exec -it ruoyi-admin /bin/bash
运行镜像
docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080 ruoyi-admin
测试看看日志信息是否正常
# 进入容器
docker exec -it ruoyi-admin /bin/bash
进入日志目录
cd /home/ruoyi/logs
使用ls -l 查看日志的基本信息
error.log大小为0表示没有报错
测试TomCat
在浏览器里面输入192.168.11.137:8080出现了一下样式就表示没问题
2.5.安装Nginx及配置静态资源
# 创建目录
mkdir -p /data/nginx/{conf,html}
上传nginx.conf至/data/nginx/conf文件夹中
启动容器服务
docker run -itd --name zking-nginx --network net-ry -p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/html:/usr/share/nginx/html \
--privileged=true --restart=always \
nginx
【解释】
docker run
: 运行一个新的容器-itd
: 分别表示分配一个伪终端(interactive)、保持容器运行状态(detach)以及使用交互模式(tty)--name zking-nginx
: 指定容器的名称为zking-nginx
--network net-ry
: 将容器连接到名为net-ry
的网络-p 80:80
: 将容器的端口 80 映射到主机的端口 80,允许通过主机的端口访问 nginx 服务-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
: 将主机上的/data/nginx/conf/nginx.conf
文件挂载到容器内的/etc/nginx/nginx.conf
,用作 nginx 的配置文件-v /data/nginx/html:/usr/share/nginx/html
: 将主机上的/data/nginx/html
目录挂载到容器内的/usr/share/nginx/html
,作为 nginx 的网页内容目录--privileged=true
: 启用容器的特权模式,允许容器访问主机的设备--restart=always
: 设置容器在退出时总是重新启动nginx
: 基于nginx
镜像创建容器通过这个命令,您可以创建一个名为
zking-nginx
的 nginx 容器,配置了指定的网络、端口映射、挂载配置文件和网页内容目录,并启用了特权模式和自动重启。
根据配置将静态资源上传至html文件夹
测试
直接在浏览器中输入服务器的IP地址http://192.168.11.137/出现主页就表示配置完成了