我正在尝试开发一种从远程数据库获取信息的微服务,但是当我运行容器时,它无法建立与该数据库的连接。
容器在本地运行(我仍在开发中),数据库托管在AWS RDS Aurora MySQL中。
数据库正在多个生产网站上使用,而我正尝试在容器中使用同一用户。该用户拥有对该数据库的完全许可权,而我的本地PHPMyAdmin使用该同一用户连接到该数据库,而我使用该数据库管理数据库没有任何麻烦。
问题是容器中的数据库连接失败,并显示“拒绝访问”错误。
数据库用户设置为dbuser@%
,但错误显示:
Access denied for user 'dbuser'@'[my public ip]' (using password: YES).
我试图为
dbuser@[my public ip]
添加另一个帐户,并赋予它与通配符主机帐户相同的权限,但这没有什么区别。在另一个测试中,我在容器内添加了curl调用以加载外部页面,以确保它可以进行外部连接并成功。只是数据库连接失败没有任何意义。
我的dockerfile看起来像这样:
FROM php:7.2-apache
RUN apt-get update
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN a2enmod rewrite
我希望有人遇到过这个问题,并且/或者知道我在这里想念的是什么。
提前致谢!
更多信息:
我正在使用适用于Windows的Docker和docker-compose来运行我的容器。我的docker-compose.yml文件如下所示:
version: "3"
services:
web:
image: repository/container:latest
volumes:
- ./src:/var/www/html
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- inv
networks:
inv:
最佳答案
使用docker run --network host ...
启动容器将使容器共享主机的网络堆栈。那应该解决问题。
关于mysql - 本地运行的Docker容器无法建立与远程MySQL数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48188153/