首页 > 解决方案 > 如何将容器 IP 地址传递给另一个容器?

问题描述

我正确地尝试将容器 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 脚本来执行此操作?

标签: mysqldockernetworkingphpmyadmin

解决方案


实际上,您可以尝试使用静态网络地址

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

推荐阅读