[英]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.