【发布时间】:2019-07-02 21:46:14
【问题描述】:
我有一个 docker compose 文件,它创建一个容器来运行我的应用程序(Ruby on Rails)和另一个容器来运行 mysql 服务器。
version: "3"
volumes:
test-db:
external: false
services:
db:
image: mysql:5.7
env_file: .env
environment:
MYSQL_DATABASE: test_development
MYSQL_ROOT_PASSWORD: foobar
MYSQL_USER: root
MYSQL_PASSWORD: foobar
volumes:
- test-db:/var/lib/mysql
ports:
- "3306:3306"
app:
build:
./
image: test_app:latest
env_file: .env
command: "rails server -b 0.0.0.0"
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- db
tty: true
stdin_open: true
我执行到 db 容器中,并且可以按预期访问 mysql cli。
$ docker exec -it test_db_1 mysql -pfoobar
Welcome to the MySQL monitor. Commands end with ; or \g.
但是,当我尝试通过应用容器访问服务器时,我遇到了以下问题。
$ docker exec -it test_app_1 mysql -hdb -pfoobar
ERROR 1130 (HY000): Host '192.168.144.3' is not allowed to connect to this MySQL server
为什么运行mysql服务器的容器无法接收来自test app容器的请求?
当我运行docker ps 时,我看到以下内容:
COMMAND PORTS
"rails server -b 0.0…" 0.0.0.0:3000->3000/tcp
"docker-entrypoint.s…" 0.0.0.0:3306->3306/tcp, 33060/tcp
【问题讨论】:
-
除非你的 yml 被破坏,否则这似乎与 rails 没有太大关系,而是与数据库服务器配置有关。
标签: mysql ruby-on-rails docker docker-compose