繁体   English   中英

无法使用 MariaDb docker-compose 获取 PhpMyAdmin

[英]Unable to get PhpMyAdmin with MariaDb docker-compose

docker-compose.yml Docker 以进行练习我已经在本地环境中创建了docker-compose.yml文件,但是我遇到了docker-compose.yml问题,它出现了一个奇怪的错误

mysqli_real_connect(): php_network_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 图像文档

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

稍微分开,您应该停止使用docker-compose.yml links 此功能已被弃用,并已被 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_HOST您还可以将您的 mariadb 容器命名为“db”:


您会注意到我对您的撰写文件进行了一些额外的编辑:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM