Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用MariaDb docker compose获取PhpMyAdmin_Docker_Phpmyadmin_Docker Compose_Mariadb - Fatal编程技术网

无法使用MariaDb docker compose获取PhpMyAdmin

无法使用MariaDb docker compose获取PhpMyAdmin,docker,phpmyadmin,docker-compose,mariadb,Docker,Phpmyadmin,Docker Compose,Mariadb,作为Docker的新手,为了练习,我在本地环境中创建了Docker compose.yml文件,但我对PhpMyAdmin有问题,它出现了一个wierd错误 mysqli\u real\u connect():php\u network\u getaddresses:getaddrinfo失败: 名称或服务未知 就我搜索它而言,我已经知道这是因为PhpMyAdmin无法找到服务器。但无法修复它 version: '3' services: myapp: image: 'bitnami

作为Docker的新手,为了练习,我在本地环境中创建了
Docker compose.yml
文件,但我对PhpMyAdmin有问题,它出现了一个wierd错误

mysqli\u real\u connect():php\u network\u getaddresses:getaddrinfo失败: 名称或服务未知

就我搜索它而言,我已经知道这是因为PhpMyAdmin无法找到服务器。但无法修复它

version: '3'
services:
  myapp:
    image: 'bitnami/codeigniter:3'
    ports:
      - '8000:8000'
    volumes:
      - '.:/app'
    depends_on:
      - mariadb
  mariadb:
    image: 'bitnami/mariadb:10.3'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  phpmyadmin:
      image: phpmyadmin/phpmyadmin
      container_name: phpmyadmin
      restart: always
      ports:
          - 8080:80
      volumes:
          - /sessions
      links:
          - mariadb

你应该更仔细地看一看

PhpMyAdmin配置为连接到名为“db”的数据库服务器。或者,您可以通过设置
PMA\u HOST
环境变量来提供显式主机名

另外,您应该停止在
docker compose.yml
中使用
链接。此功能已被弃用,并已被Docker维护的DNS服务所取代,该服务允许容器按名称相互引用

考虑到以上所有因素,您编写的文件应该如下所示:

version: '3'

services:
  myapp:
    image: 'bitnami/codeigniter:3'
    ports:
      - '8000:8000'
    volumes:
      - '.:/app'
  mariadb:
    image: 'bitnami/mariadb:10.3'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  phpmyadmin:
      image: phpmyadmin/phpmyadmin
      restart: always
      ports:
          - 8080:80
      volumes:
          - /sessions
      environment:
        PMA_HOST: mariadb
除了设置
PMA\u HOST
之外,您还可以将您的mariadb容器命名为“db”:


您会注意到,我对您的撰写文件进行了两次附加编辑:

  • 我已从您的
    phpmyadmin
    服务中删除了
    containername
    设置。设置显式容器名称通常是不必要的,这将阻止您运行此compose文件的多个实例

  • 我已经从您的
    myapp
    服务中删除了
    dependens\u
    ,因为它很少有用:虽然它会导致您的
    myapp
    容器在您的
    mariadb
    容器之后启动,但Docker实际上不知道数据库是否已实际启动并运行并准备好服务请求,因此,您的应用程序仍有可能在数据库实际可用之前启动

    最好的解决方案是让应用程序重试失败的数据库连接