1、external_links方式
(1)连接同一台服务器的不在同一个docker compose yaml文件的容器:可以使用external_links方式,但是要配置网络模式。
(2)网络模式配置与使用:
- 配置:
networks:
ca-ha:
driver: bridge
- 使用:
- ca-ha
- 注意:
(1)要将各个yaml文件的父路径名称一致。否则创建出来的网络模式不一样,导致相互连接不上。
(2)如果两个yaml文件中都配置了相同名称的网络,谁先启动容器创建这个网络,后启动的容器发现同名的网络模式已经存在就不再创建了。
以下就是,两个yaml文件存放的父路径名不一样,导致创建的网络名称也不一样,一个是start-up_ca_ha,一个是database_ca_ha。
2、extra_hosts方式
(1)连接不痛服务器的容器时,可以使用extra_hosts方式,例如:
extra_hosts:
- database:192.168.125.162
#3、使用例子
- 数据库容器启动yaml文件
version: '3.6'
networks:
ca-ha:
driver: bridge
services:
raybaas-ca-database-ha:
image: mysql:5.7.22
container_name: raybaas-ca-database-ha
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root20180315
- MYSQL_DATABASE=ca_database_ha
ports:
- 3308:3306
volumes:
- ../datadir:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
networks:
- ca-ha
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --init-connect='SET NAMES utf8mb4;' --innodb-flush-log-at-trx-commit=0
- ca容器启动yaml文件
version: "3.6"
networks:
ca-ha:
driver: bridge
services:
raybaas-ca-ha-1:
image: openjdk:8u181-jdk
container_name: raybaas-ca-ha-1
ports:
- 9006:8080
- 50056:50051
restart: always
environment:
- CA_DATABASE_HOST=database
- CA_DATABASE_PORT=3306 #如果是external_links模式,就要用数据库容器内端口3306,如果是extra_hosts模式,就要用数据库容器外部端口3308
- CA_DATABASE_NAME=ca_database_ha
- CA_DATABASE_USERNAME=root
- CA_DATABASE_PASSWORD=root20180315
- CA_SIGN_ALGORITHM=SM2 # 签名算法 可选的有 RSA,SM2 默认为SM2
working_dir: /opt/app
external_links:
- raybaas-ca-database-ha:database #外部容器映射内部调用的别名
volumes:
- ../app:/opt/app #运行jar包放置目录,包括秘钥,日志等
- /etc/localtime:/etc/localtime:ro
networks:
- ca-ha
command: java -jar raybaas-ca-portal-4.0.0-SNAPSHOT.jar
# extra_hosts:
# - database:192.168.125.162