Loading

Docker实战(十) — 项目部署准备

>>Docker实战系列<<


前言

(重要)由于本文章是关于Docker实战的系列,故部署代码不在此赘述,RuoYi-Cloud项目使用Docker部署需要修改如 Nacos Mysql Redis地址,添加Dockerfile或者使用docker-maven-plugin构建,反正怎么样都可以,所以本人fork了RuoYi-Cloud Github的仓库,并为每个微服务添加了相应的Dockerfile。
读者可直接使用IDEA用Git clone导入本人的Github地址,由于读者仅做Clone操作所以这里还提供仓库的Github加速地址


等待项目加载 索引完毕

环境修改

(重要)将MySQL Redis和MinIO修改为ruoyi-network网络。
在前几章节中我们并没有指定 MySQL和Redis的network,那么Docker会使用默认的 bridge ,所以在这里我们需要创建一个我们自己名称为 ruoyi-network 的network。

#创建 network 
docker network create ruoyi-network

接下来就可以使用我们搭建的Portainer来修改容器的网络了。

可以看到同一个容器可以挂载多个network。

IDEA 连接Docker

IDEA连接Docker在Docker实战(三) —— 使用TLS保护Docker远程端口一节有详细的描述,读者若是使用虚拟机的情况下为了方便也可以不使用证书连接,不过由于其不能保证安全性所以不在此赘述操作方法(因为若在外网暴露且没有TLS保护将会导致服务器被攻击),读者按照Docker实战(三) —— 使用TLS保护Docker远程端口一文操作连接即可。

Docker 容器参数解释

--restart 根据我的使用经验 如MySQL Redis等若使用Docker部署的话可以使用 --restart=always 部署以实现服务停止后自动重启,而我们自己写的代码如ruoyi-syatem则可以使用 --restart=on-failure:3 来控制其出现错误后自动重启,且最大容忍3次不会'always'重新启动。
--network 我们使用SpringCloud时会有服务发现及服务间相互调用问题 在Docker中我们不能使用IP地址,因为每次重新启动Docker将重新分配IP,所以我们使用容器的名称做连接地址 如mysql-server那么我们在配置之后就可以将mysql的ip换成mysql-server,在同一个network中他们是可以访问到的,也就是说我们可以新建一个network 在docker run 时候加上 --network 最后命令看起来可能是这样的 docker run -d -p 80:80 --name=ruoyi-ui --network=ruoyi-network ruoyi-ui:0.0.1 我们在同一个项目中将所有服务都划分到一个network中使其能相互访问。容器的ip可能如下图一样

-p 这个参数是用来暴露宿主机和容器之间的映射关系的,当指定时可通过宿主机加端口访问,若在某些环境或者特定服务无访问需求也可不使用其指定端口映射,只让容器在相同网络段中互相访问,不通过宿主机访问(我认为不指定-p 而相同网段间容器能访问可能是因为Dockerfile构建时候使用 EXPOSE 的原因 也可能是本来就能访问 我只是猜想一下并没有实践证明。)
--add-host 可以将外部服务导入容器 假设我的nacos是部署在宿主机上那么我可以使用 docker run -d -p 80:80 --add-host=nacos-server:192.168.242.147 --name=ruoyi-ui --network=ruoyi-network ruoyi-ui:0.0.1 来将其写入容器的hosts中。

posted @ 2021-06-03 09:44  niaucz  阅读(190)  评论(0编辑  收藏  举报