课程名称: SpringBoot+Vue3 项目实战,打造企业级在线办公系统
课程章节: 第10章 发布Emos项目
主讲老师: 神思者
课程内容
emos项目的核心功能都已经做完了。虽然在本地电脑上运行前后端项目没有问题,但是毕竟本地电脑没有外网静态IP,所以外网用户无法访问到本地主机上的项目。因此需要利用云主机发布项目,这样外网用户就都能访问到项目了。详细可以查看思维导图:
安装Docker环境
Docker的安装
docker安装可以采用Linux自带的yum模块进行一键式安装。
yum install docker -y
管理Docker程序的命令也非常简单,如下:
service docker start
service docker stop
service docker restart
配置Docker的加速器
因为Docker在线安装镜像是从国外的DockerHub网站下载文件,所以速度超级慢,所以我们要给Docker设置加速器。
打开/etc/docker/daemon.json
文件,然后设置成如下内容:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
重新启动Docker服务,加速器才能生效。
service docker restart
基础应用安装
安装好了Docker环境,在部署程序之前,我们首先要把MySQL、MongoDB、Redis和RabbitMQ,都部署在Docker容器中。为了分别管理起来更方便,每个程序部署到一个单独的容器中。
mysql
docker pull mysql:8.0.23
创建容器的时候,我们需要把MySQL容器内的数据目录映射到CentOS系统上面。如果MySQL容器挂掉了,数据库文件不会丢失。我们新建一个MySQL容器,挂载上这个数据目录就又能正常使用MySQL了。
以前我说过Docker会给每个容器创建一个虚拟的网卡,然后分配一个Docker内网IP地址。假设A容器部署了MySQL,B容器中的Java程序想要访问A容器的MySQL,JDBC路径就要写A容器的Docker内网IP地址,略显麻烦。
这次部署项目,我打算把容器设置成host模式,就是不让Docker为容器虚拟网卡,Docker容器直接使用CentOS的网卡。A容器和B容器中使用的都是CentOS的网卡,所以A容器中localhost代表CentOS,B容器中的localhost也代表CentOS,两个容器相互访问,URL地址写localhost即可。例如B容器中JDBC路径的host写localhost,就能访问到A容器里面的MySQL。这样我们部署的若干容器,相互访问就简单多了。
MySQL容器我分配内存空间是500M,如果将来觉得不够用,删除容器,再创建新容器的时候分配更大的内存。而且只要挂载上那些文件目录,MySQL的数据就不会丢失。
docker run -it -d --name mysql --net=host \
-m 500m -v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai mysql:8.0.23 \
--lower_case_table_names=1
安装MongoDB
执行命令,下载特定版本的MongoDB镜像。最新版本的MongoDB连接的时候登录认证兼容性不好,所以我们不必追求最新版本的MongoDB,我们只追求运行稳定,所以通用的老版本就很适合我们。
docker pull mongo:4.4.7
创建/root/mongo/mongod.conf
文件,然后在文件中添加如下内容:
net:
port: 27017
bindIp: "0.0.0.0"
storage:
dbPath: "/data/db"
security:
authorization: enabled
创建容器,为MongoDB分配500M内存。
docker run -it -d --name mongo --net=host \
-v /root/mongo:/etc/mongo \
-v /root/mongo/data/db:/data/db \
-m 500m \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai \
mongo:4.4.7 --config /etc/mongo/mongod.conf
安装Redis程序
执行命令,在线安装Redis镜像,这里我们也是安装特定版本的Redis。
docker pull redis:6.0.10
创建/root/redis/conf/redis.conf
文件,然后添加如下内容:
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 4
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass abc123456
执行命令,创建Redis容器,分配300M内存。
docker run -it -d --name redis -m 300m --net=host \
-e TZ=Asia/Shanghai \
-v /root/redis/conf:/usr/local/etc/redis redis:6.0.10 \
redis-server /usr/local/etc/redis/redis.conf
安装RabbitMQ
执行命令,在线安装RabbitMQ镜像。虽然咱们的项目暂时没有用上RabbitMQ,但是在手册中我会更新消息模块的代码,那时候就会用上RabbitMQ了,所以咱们先把RabbitMQ部署好,以后要用到。
docker pull rabbitmq:3.8.9
执行命令,创建RabbitMQ容器,分配300M内存。
docker run -it -d --name mq -m 300m --net=host -e TZ=Asia/Shanghai rabbitmq:3.8.9
课程收获
-
学习了Docker的安装方式
一、手动安装 1、安装需要的软件包yum-util 提供yum-config-mamager功能,另外两个是devicemapper驱动依赖的 sudo yum install -y yum-utils 2、设置yum源为阿里云(速度更快) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3、安装docker(docker-ce社区版免费) yum -y install docker-ce docker-ce-cli containerd.io 4、安装后查看docker版本 docker -v 5、设置ustc镜像站点(指定注册中心地址) 安装完之后这个文件是空的 vim /etc/docker/daemon.json { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] } 二、脚本安装 1、安装发布版本 curl -fsSL https://get.docker.com -o get-docker.sh -o test-docker.sh sh get-docker.sh 三、yum安装(最省心) yum install docker -y
-
学会了Docker安装应用
创建容器常用的参数说明:
创建容器命令:docker run
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射