我正确地尝试将容器ip地址传递给另一个
这是我的docker-compose.yml文件
app-phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- app-mysql
ports:
- '80'
container_name: app-phpmyadmin
environment:
PMA_HOST: app-mysql
PMA_PORT: 3306
app-mysql:
image: mysql:8
container_name: app-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: app-phpmyadmin <<<< doesnt work see below why
ports:
- 3306
在传递app-phpmyadmin而不是通过ip时,实际上将“ app-phpmyadmin”写为字符串。选择使用时,从mysql.user主机,主机名是“ app-phpmyadmin”,而不是IP。
有没有办法在docker-compose文件中做到这一点,还是我必须提出一个可以执行此操作的bash脚本?
答案 0 :(得分:0)
实际上,您可以尝试使用静态网络地址
version: '3.4'
services:
app-phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- app-mysql
ports:
- '81'
container_name: app-phpmyadmin
environment:
PMA_HOST: app-mysql
PMA_PORT: 3306
networks:
app-net:
ipv4_address: 10.5.0.5
app-mysql:
container_name: app-mysql
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: 10.5.0.5
ports:
- 3306
networks:
app-net:
ipv4_address: 10.5.0.6
networks:
app-net:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
答案 1 :(得分:-1)
尝试
version: '3'
services:
app-phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- app-mysql
ports:
- '8081:80'
container_name: app-phpmyadmin #name expose at list: docker ps
hostname: app-phpmyadmin #hostname in network docker
environment:
PMA_HOST: app-mysql
PMA_PORT: 3306
PMA_USER: "root"
PMA_PASSWORD: "root"
app-mysql:
image: mysql:5.7 #downgrade beacause mysql 8 generate error with phpmyadmin. error: caching_sha2_password
container_name: app-mysql #name expose at list: docker ps
hostname: app-mysql #hostname in network docker
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306