# 一、准备工作

# 1、目录说明

  服务器的文件目录说明:

# 存放docker镜像的地方
docker search redis # docker hub

# 存放软件环境
mkdir -p /data/docker_service

# ----------

# 临时存放Git项目代码
# mkdir -p /home/app_code

# 存放已部署上线的项目
# mkdir -p /data/app

# 2、Portainer 工具

  使用 Portainer 一个轻量级的图形化界面应用来管理 docker。

官网:

https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux

docker volume create portainer_data

docker run -p 8000:8000 -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
-d portainer/portainer-ce:2.9.3
  • 访问
# 服务器ip地址:9000
admin
[密码设置]
其他工具

  上面的 Portainer 是轻量级的,下面的这个 CIG 是重量级的

# CAdvisor监控收集  +  InfluxDB存储数据  +  Granfana展示图表

# 略

# 3、端口映射

基础环境 端口映射 项目数据 端口映射
JDK MySQL 3307:3306
Tomcat 8081:8080 Redis 6380:6379
Maven MongoDB 27018:27017
RabbitMQ 15672
Nginx 81:80
Node

# 4、Docker 安装

  Docker 在 centos 上目前有三种安装方式。下面我们采用

具体见:https://docs.docker.com/engine/install/centos/

# 设置docker存储库(使用阿里的镜像)
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

# 安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 验证是否成功
docker -v

# 启动docker
systemctl start docker

# 开机自启
systemctl enable docker
拓展:docker 镜像加速

  要注意是的,registry-mirrors 的值可以使用自己的阿里云镜像服务,具体位置如下:

阿里云-容器镜像服务 ACR-管理控制台-镜像工具-镜像加速器

⚠️ 注意:阿里云镜像站存在未同步最新源镜像问题,建议同时配置多个镜像加速器,具体参考Gist (opens new window)

# 编写docker/daemon.json配置文件
mkdir -p /etc/docker
vim  /etc/docker/daemon.json
# 添加
{
  "registry-mirrors": ["https://7ykbt77s.mirror.aliyuncs.com"]
}

# 使配置文件生效
systemctl daemon-reload
systemctl restart docker

# 5、docker-compose 安装

  • 安装
# 官方
curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 国内
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.12.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose


chmod +x /usr/local/bin/docker-compose

docker compose version
  • 卸载
rm /usr/local/bin/docker-compose

# 二、基础环境

# 前置说明

注意

关于 docker 的映射文件本地位置: /sources
关于 docker 的端口映射说明:比默认端口 + 1

  • option 说明
-d # 后台守护式🎈启动
-p [本地端口]:[镜像端口] # 端口映射

--privileged=true # 扩大容器权限
-v [本地文件路径]:[镜像文件路径] # 数据备份
# 自动重启docker容器
docker update --restart=always [容器ID]

# 后端

# 1、JDK 安装

# 可以忽略(FROM作为基础镜像时会自动安装)
docker pull openjdk:8

# 2、Tomcat 安装

# 安装
docker pull tomcat:8.5.83-jdk8
docker images

# 文件准备
docker run -p 8081:8080 --name tomcat8 -d tomcat:8.5.83-jdk8

mkdir -p /sources/tomcat8
docker cp tomcat8:/usr/local/tomcat/webapps.dist /sources/tomcat8/
cd /sources/tomcat8/ && mv webapps.dist webapps
docker cp tomcat8:/usr/local/tomcat/conf /sources/tomcat8/
docker cp tomcat8:/usr/local/tomcat/logs /sources/tomcat8/

docker rm -f tomcat8

# 启用
docker run -p 8081:8080 --name tomcat8 --privileged=true \
-v /sources/tomcat8/webapps:/usr/local/webapps \
-v /sources/tomcat8/conf:/usr/local/tomcat/conf \
-v /sources/tomcat8/logs:/usr/local/tomcat/logs \
-d tomcat:8.5.83-jdk8

docker ps
docker exec -it tomcat8 /bin/bash
ls
rm -r webapps
mv webapps.dist webapps
  • 测试
# 直接访问 服务器地址:8081 即可
  • server.xml 配置
# /sources/tomcat8/conf/server.xml 目录下修改即可

# 前端

# 1、Nginx 安装

# 可以忽略(FROM作为基础镜像时会自动安装)
docker pull nginx:1.17.10
拷贝配置文件 nginx.conf
# 方式1
docker run --name nginx -p 81:80 -d nginx:1.17.10

mkdir -p /data/docker_service/nginx/conf
docker cp nginx:/etc/nginx/nginx.conf /data/docker_service/nginx/conf/nginx.conf

docker rm -f nginx

# 方式2
# (当然也可以离线下载nginx-1.17.10.tar.gz --- 然后拿取里面的nginx.conf 备用)
mkdir -p /data/docker_service/nginx/conf
cp -p /root/code-environment/conf-source/nginx.conf /data/docker_service/nginx/conf
# 拉取镜像
docker pull nginx:1.17.10
docker images

# 初始化容器(后台守护式运行)
docker run --name nginx -p 81:80 --privileged=true \
-v /data/docker_service/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/docker_service/nginx/html:/usr/share/nginx/html \
-v /data/docker_service/nginx/logs:/var/log/nginx \
-d nginx:1.17.10

# 其他

# 1、Ubuntu 安装

# 演示环境
docker pull ubuntu

docker run -it ubuntu
# 安装vim
apt-get update
apt-get -y install vim

# 三、项目数据 🎈

# 1、Mysql 安装

# 拉取镜像
docker pull mysql:5.7.40
docker images

# 初始化容器(后台守护式运行)
docker run -p 3307:3306 --name mysql --privileged=true \
-e MYSQL_ROOT_PASSWORD=mysql666 \
-d mysql:5.7.40

# 进入容器测试
docker ps -a
docker exec -it mysql /bin/bash
mysql -uroot -p
> show database;
exit

# 远程连接测试
# 使用Navicat等工具进行连接测试即可
拓展:字符编码处理

  docker 容器 mysql:5.7.40 默认的字符编码为 utf8mb4,它相较于 utf8 编码来说支持更广泛的字符范围,包括 Emoji 表情、一些不常见的汉字、特殊符号等。

  但如果我们的应用程序只需要处理常规文本,没有特殊字符需求,并且想要节省一些存储空间,那么 utf8 可能足够。

docker run -p 3307:3306 --name mysql --privileged=true \
-v /sources/mysql/logs:/var/log/mysql \
-v /sources/mysql/data:/var/lib/mysql \
-v /sources/mysql/conf:/etc/mysql/conf.d \
-d mysql:5.7.40 \
-e MYSQL_ROOT_PASSWORD=mysql666 \

# 2、Redis 安装

# 拉取镜像
docker pull redis:6.0.8
docker images

# 初始化容器(后台守护式运行)
docker run -p 6380:6379 --name redis  --privileged=true \
-d redis:6.0.8 \
--requirepass "redis666"

# 进入容器测试
docker ps -a
docker exec -it redis  /bin/bash
redis-cli
> set name lencamo
> get name
exit

# 远程连接测试
# 使用RESP等工具进行连接测试即可

# 3、MongoDB 安装

# 安装
docker pull mongo:4

# 启用
docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:4

# 远程连接测试
# 使用Navicat等工具进行连接测试即可

# 4、RabbitMQ 安装

# 安装
docker pull rabbitmq:3.9-management

# 启用
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq \
-d rabbitmq:3.9-management
# 访问:http://ip地址:15672
# guest guest

# 四、Docker 思考

docker 适合跑轻量级或分布式数据库,当 docker 服务挂掉,会自动启动新容器,而不是继续重启容器服务

# 1、对比本地

  使用 docker 安装环境的过程要简单的多:

  • 不需要对每个服务设置开机自启了(ruoyi 容器运行状态由 docker 决定)
  • 不需要对每个服务设置环境变量(宿主是 docker)
  • 像 mysql、redis 等容器的密码设置仅使用 参数即可配置成功
  • 可以同时安装多个版本的同类环境(docker 可以进行版本管理)

需要自定义配置文件的换,通过 docker 的 -v 进行映射即可

# 2、docker 优势

优点 1:

  利用 Dockerfile 启动一个一个的前后端项目,结合 docker-compose 可以更加方便管理每个项目。

优点 2:

  由于使用的是 Docker,项目的 👏 数据(mysql、redis 等)可以非常方便的移植

更新于 : 8/7/2024, 2:16:31 PM