最近使用docker部署的项目,遇到容器间相互通信的问题,遂整理处理以便后续使用。我的应用场景是mysql数据库和springboot项目分别使用不同的docker容器启动,这样导致springboot项目访问数据库受限,期间采用过多种方式都未解决,最后使用docker-compose启动方式完美解决问题。
至于安装docker和docker-compose请自行百度,这里不再讲解。
这里直接贴上docker-compose.yml配置
-links参数是保证容器间通信的关键
version: '2'
services:
mysql:
container_name: mysql
restart: always
image: docker.io/mysql:ninemax
environment:
MYSQL_ROOT_PASSWORD: ninemax
volumes:
- ./mysql/:/var/lib/mysql/
ports:
- "3308:3306"
networks:
- mynet
benti-images:
build: .
container_name: benti-images
restart: always
image: benti-images:11.0
#links链接到其它服务中的容器,配置后benti-images容器就可以用mysql连接数据库,如:mysql:3306
links:
- mysql
ports:
- "8080:7080"
#tty: true 配置是为了容器保持后台运行,不退出。如果不加这个参数,benti-images容器会不断退出不断重启
tty: true
networks:
- mynet
networks:
mynet:
driver: bridge
启动容器:docker-compose up -d ### -d参数是进行后台启动
---------------------------分割线---------------------------------------
最新项目已经使用k8s来管理docker容器了,对于k8s这里就不过多介绍了。小弟在这里奉上免费的k8s的视频教程,需要的伙伴可以拿去学习学习。