01-DockerCompose
1、DockerCompose容器之间相互访问
同一台宿主机下的不同的docker容器相互访问的情况
(1)、方案一:加入同一网络
首先Docker创建网络
docker network create dev_net
举例: Nacos链接Mysql
services:
mysql:
#mysql服务节点
image: mysql:5.7 #mysql镜像,如果镜像容器没有会去自动拉取
container_name: mysql #容器的名称
## *这里需要加入上面创建的网络*
networks:
- dev_net
deploy:
resources:
limits:
memory: 1G
command:
#构建容器后所执行的命令
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower-case-table-names=1 #忽略数据表明大小写
restart: no #跟随docker的启动而启动
environment:
MYSQL_ROOT_PASSWORD: root #设置root帐号密码
ports:
- 3306:3306
volumes:
- ./mysql/data:/var/lib/mysql #数据文件挂载
- ./mysql/conf.d:/etc/mysql/conf.d #配置文件挂载
- ./mysql/log:/var/log/mysql #日志文件挂载
# 这里引入创建的网络
networks:
dev_net:
external: true
services:
nacos:
image: nacos/nacos-server:v2.2.2
container_name: nacos
## *这里需要加入上面创建的网络*
networks:
- dev_net
restart: no
ports:
- 8848:8848
- 9848:9848
- 9849:9849
environment:
TZ: Asia/Shanghai
MODE: standalone
SPRING_DATASOURCE_PLATFORM: mysql
#加入同一个网络后可以直接使用容器name来通信
MYSQL_SERVICE_HOST: mysql
#直接连接容器端口,不是映射到宿主机的端口
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: root
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
volumes:
- ./logs/:/home/nacos/logs
# 这里引入创建的网络
networks:
dev_net:
external: true
容器启动后查看网络连接情况
docker network inspect dev_net
就会出现以下内容
这里的Containers里面显示的是加入此网络的容器名称。
作者:何贤刚 创建时间:2024-05-12 22:06
最后编辑:何贤刚 更新时间:2024-05-12 22:15
最后编辑:何贤刚 更新时间:2024-05-12 22:15