我有几个需要连接到mysql容器的容器。对于此示例,我将使用我的webapi
容器。目前,如果我的“test”用户host
设置为mysql用户表中容器的IP(172.18.0.4),我可以这样做。
我的理解是我可以使用docker-compose文件中的服务名称,因为它们将位于同一网络上,因此不依赖于IP。虽然我将“test”用户的host
更改为容器的服务名称,例如webapi
。我被抛出一个mysql错误。
SQLSTATE[HY000] [1045] Access denied for user 'test'@'172.18.0.4' (using password: YES)
我的docker-compose文件为
version: '2.3'
services:
webapp:
image: webapp:0.3
networks:
- frontend
depends_on:
- database
webapi:
image: webapi:0.2
networks:
- frontend
depends_on:
- database
database:
image: database:0.1
networks:
- frontend
- backend
volumes:
- mysql-data:/var/lib/mysql
networks:
frontend:
external: true
backend:
external: true
volumes:
mysql-data:
external:
name: mysql-data
我做错了什么或者我对能否使用服务名称作为MYSQL用户host
的理解不正确?
数据库映像是从官方MariaDB dockerfile构建的。
答案 0 :(得分:1)
我发现了这个,但忘了回复。有趣的是,dockerfile设置了 skip-name-resolve ,它禁用了DNS主机名查找。
我发现这有点奇怪,因为docker推动开发人员使用容器名称作为DNS记录......
因此,如果您遇到此问题,请将其回显的行删除到Dockerfile底部附近的.cnf文件中。