无法使用MariaDb docker compose获取PhpMyAdmin
作为Docker的新手,为了练习,我在本地环境中创建了无法使用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 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实际上不知道数据库是否已实际启动并运行并准备好服务请求,因此,您的应用程序仍有可能在数据库实际可用之前启动
最好的解决方案是让应用程序重试失败的数据库连接