基于docker部署spring cloud微服务项目,实操版本

前言

基于业务需求,需要部署spring cloud项目,之前用docker部署jar包,本次需要部署微服务项目记录下全套部署,从零开始。

docker容器的基础命令

//查看当前可用镜像
docker images  
//删除镜像
docker rmi 镜像名称 
//从镜像源中搜索mysql相关镜像
docker search mysql  
//从dokcer镜像网站拉取一个mysql 8.0版本的镜像到本地,:8为指定版本,如不填写则默认为lasted最新版本
docker pull mysql:8  
//创建网络,创建一个自己的网络并指定网络段。--opt com.docker.network.driver.mtu=1450 携带此参数才能在运行的容器中访问外网  mynet=网络名称  --subnet=指定网络ip段
docker network create --opt com.docker.network.driver.mtu=1450 mynet --subnet 172.19.0.0/24
//查看网络情况
docker network inspect mynet
//删除网络
docker network rm mynet
// 指定镜像运行一个容器到本地,--name 容器名称  --network 指定网络(非必选,指定ip时必填)  --ip指定ip(非必选,如果想多个容器间通信时必填) -p 指定容器端口和宿主机端口的映射  -d 后台运行  最后一位为镜像名称,必选时已拉取到本地的
docker run --name nacos --network mynet --ip 172.19.0.1 -e MODE=standalone -p 8848:8848 -d nacos/nacos-server  
 //查看运行的容器
 docker ps 
 //重启容器 nacos为容器名称或容器ID都可以
 docker restart nacos
 //查看容器日志
 dokcer logs nacos
 //查看全部容器
 docker ps -a
 //进入容器 在容器中执行exit可退出当前容器系统,回到宿主机
docker exec -it 容器ID或名称 bash
//复制文件进入容器  /home/data 宿主机文件路径  nginx 容器名称  /home为容器内路径
docker cp /home/data nginx:/home
//从容器中复制文件到宿主机 同上,只是换了个位置
dokcer cp nginx:/home/data /home
//容器日志查看-可支持搜索和筛选,具体的自行查询
docker logs 容器ID或名称

环境说明

微服务占用内容较大,请注意此问题。

由于是微服务项目,所以要给容器固定下ip,防止后期重启服务器导致ip变动了麻烦,特别是nacos,redis,mysql这种容器ip
创建一个网络,用于固定容器启动时的ip指定,防止重启后ip地址变更。创建网络这部分是重点,因为为容器固定ip地址和容器内访问外部网络都是很重要的,是必不可少的。

docker network create --opt com.docker.network.driver.mtu=1450 mynet --subnet 172.19.0.0/24

由于docker需要指定网络,所以必须要在命令上增加 --subnet 172.190.0.0/24 ip网段可以自定义为未占用的网段,但/24不能改,如不指定在默认是/16。/16指的是子网掩码为255.255.0.0 /24为255.255.255.0 必须指定为/24时,在创建容器时才能通过–ip来进行指定ip地址。
–opt com.docker.network.driver.mtu=1450 此参数是为解决docker容器访问外部网络通信。具体原因可参考此链接

1.安装MySql

//拉取一个mysql5.7镜像
docker pull mysql:5.7
//运行容器  指定网络及ip,不然其他容器无法访问--注意设置时区,不然时间对不上,lower_case_table_names设置忽略表名忽略大小写
 docker run --network mynet --ip 172.19.0.3  -p 3306:3306 -e TZ=Asia/Shanghai  --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1 --sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
//进入容器
docker exec -it mysql bash 
//进入mysql
mysql -uroot -p123456
//重新创建一个root用户,赋予全部权限,并且允许远程连接
grant all privileges on *.* to root@'%' identified by 'craete@123456'; 
//退出容器 注意这里两次exit,第一次是退出mysql 第二次退出mysql容器回到宿主机
exit
exit
//至此mysql安装完成,可通过navicat等工具进行远程连接,配置naocs所需的数据库及表

2.安装nacos

查看nacos版本

docker search nacos

//直接拉去最新的版本,注意此处的名称,并不是nacos,不要盲目的安装
 docker pull nacos/nacos-server 
 //运行容器
 docker run --name nacos --network mynet --ip 172.19.0.2 -e MODE=standalone -p 8848:8848 -d nacos/nacos-server
//配置mysql数据源头,由于docker容器中默认没有vi编辑功能,所以我都是直接复制文件出来修改
docker cp nacos:/home/nacos/conf/application.properties /home/nacos

配置mysql的ip和密码信息。
在这里插入图片描述
配置之后重启nacos容器即可,docker restart nacos
[此处注意,如果nacos和mysql不在同一个网络适配器上,则需要修改docker容器对应的配置]

3.安装redis

获取redis镜像 默认获取最新的,可以通过docker starch redis查看所有版本

//获取一个最新版本
docker pull redis
 //运行到容器中
 docker run --name redis --network mynet --ip 172.19.0.4 -p 6379:6379  -e redis_password=123456 -d redis  redis-server --appendonly yes

4.安装nginx

//拉取nginx
docker pull nginx
//运行到容器--注意此处映射了80端口和443端口,443端口用户https配置
docker run --name nginx --network mynet --ip 172.19.0.5 -p 80:80 -p 443:443 -d nginx
//配置网站映射,通过复制文件出来,也可以直接配置为宿主机文件挂载,具体的自行查询docker文件挂载
docker cp nginx:/etc/nginx/conf.d/default.conf /home/nginx

5.运行java程序

新建Dockerfile文件,内容如下:

# 拉取jdk17作为基础镜像,这里的名称及版本就是拉取到本地的镜像名称和版本号
FROM openjdk:17
# 作者
MAINTAINER jyj <jyj@163.com>
# 添加jar到镜像目录/jar并命名为gateway.jar
ADD gateway.jar /jar/gateway.jar
# 镜像启动后映射的端口
EXPOSE 8080
# jar运行命令,参数使用逗号隔开
ENTRYPOINT ["java","-jar","-Xms256m","-Xmx256m","-XX:PermSize=256m","-XX:MaxPermSize=256m","-XX:MaxNewSize=256m","/jar/gateway.jar"]

将Dockerfile文件同jar包放在同一个目录中
在这里插入图片描述
首先执行build将我们的jar包运行为一个镜像

//注意,首先得进入到存放DockerFile目录下,比如我这里进入的是:/data/java/gateway目录后执行,结尾有一个点 .不能去除
docker build -t gateway . 
//查看镜像
docker images

执行成功后即可看到名为gateway的镜像

运行容器

//运行一个容器 --切记要指定网络,ip可以不指定,但必须将此网络和nacos置于同一个网络中,否则无法相互通信
docker run --network mynet --ip 172.19.0.6 -e TZ=Asia/Shanghai --name gateway -p 9600:9600 -d gateway
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值