如何将容器的IP地址传递到另一个容器?

时间:2020-01-16 21:17:23

标签: mysql docker networking phpmyadmin

我正确地尝试将容器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脚本?

2 个答案:

答案 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

相关问题