Docker部署springboot+MySQL+redis
1、安装启动Docker
参考博客:https://apad.pro/centos7-docker/
1 | systemctl start docker |
2、创建自定义网络
docker 默认是使用bridge,容器每次启动,IP都会发生变动,不利于维护管理, 172.17.0.0/16 是docker默认网段。
这里我们使用一个其他网段。
1 | docker network create --driver bridge --subnet 172.168.0.0/24 --gateway 172.168.0.1 your_network |
3、创建容器
3.1 启动mysql容器
拉取mysql镜像
1 | docker pull mysql:5.7 |
创建并运行容器,{password}
是root
密码,--network your_network --ip 172.168.0.2
使用之前创建的网络, 172.168.0.1
是网关
1 | docker run --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD={password} --network your_network --ip 172.168.0.2 -d mysql:5.7 |
3.2 启动redis容器
拉取redis镜像
1 | docker pull redis |
启动redis
1 | docker run -p 6379:6379 --network your_network --ip 172.168.0.5 --name redis -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes |
- /root/redis/redis.conf 中daemonize=NO。非后台模式,如果为YES 会的导致 redis 无法启动,因为后台会导致docker无任务可做而退出。
- -v /root/redis/data:/data 容器 /data 映射到宿主机 /root/redis/data
- -d redis 后台模式启动 redis
- redis-server /etc/redis/redis.conf redis 将以 /etc/redis/redis.conf 为配置文件启动
- –appendonly yes 开启redis 持久化
3.3 启动后端容器
创建maven工程,导入源码,更改配置文件
打包项目,jar打包在target文件夹下,main-1.0.jar
1 | mvn clean package |
在需要部署的jar包的同级目录下,创建Dockerfile,内容如下
1 | FROM openjdk:8 |
执行镜像构建命令
1 | docker build -t your_img:1.0 . |
镜像名随意,注意最后有一个点
注意:需要在Dockerfile目录下执行, .表示在当前目录,也可指定目录。
可通过 docker images查看刚刚构建的镜像
启动后端容器
1 | docker run --name your_container -p 8080:8080 --network your_network --ip 172.168.0.3 -d your_img:1.0 --privileged=true |
浏览器访问:xxxx/xxx(这里是你的借口地址)
即可预览效果
4、其他常用操作
查看运行容器、删除容器
docker ps -a
docker container rm 容器id
查看镜像、删除镜像
docker images
docker rmi 镜像id
注意镜像如果被容器使用,需要先删除容器后才可以删除镜像
查看容器的日志地址
1 | docker inspect --format '{{.LogPath}}' 容器id |
然后通过cat命令查看上述命令找到的日志地址
停止和重启容器
docker stop your_container
docker restart your_container
maven分环境打包镜像
yml多环境配置:https://juejin.cn/post/6844904050324930574
mvn clean package -P prod
docker部署springboot项目(更新无需重新build)
重点就是编辑Dockerfile时使指定决定路径
参考 https://blog.csdn.net/qq_40298902/article/details/126334098
5、参考博客:
https://blog.22xcode.com/post/12
https://github.com/MQPearth/Blog
yml多环境配置:https://juejin.cn/post/6844904050324930574
(注意pom里的文件是放在main模块下,即config所在的模块下)