你好,我有一个大问题。 我正在尝试在单独的 docker 容器上运行 rails 和 mysql。 在 docker-compose.yml 我有:
version: '2'
services:
db:
image: mysql
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: zzz
MYSQL_USER: root
MYSQL_PASSWORD: zzz
MYSQL_DATABASE: zzz
web:
build: .
command: bundle exec rails s -p 3000
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- db
在我的 rails database.yml 中
development:
adapter: mysql2
encoding: utf8
database: zzz
pool: 5
username: root
password: zzz
host: database.dev //this is host for container with mysql
port: 3306
结束时,当我运行应用程序时出现错误:
用户 'root'@'xxx' 的访问被拒绝(使用密码:YES)
其中 xxx 是 ip 我的机器而不是容器。请帮助我不知道该怎么做
最佳答案
你必须 link容器,这应该有效:
version: '2'
services:
db:
image: mysql
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: zzz
MYSQL_USER: root
MYSQL_PASSWORD: zzz
MYSQL_DATABASE: zzz
web:
build: .
command: bundle exec rails s -p 3000
volumes:
- .:/app
ports:
- "3000:3000"
links:
- db:sql_srv
depends_on:
- db
现在 web
容器链接到 db
和 sql_srv
是 db
的别名容器。你应该到达 db
来自 web
的容器使用此地址的容器:sql_srv:3306
您实际上不需要指定 ports
在db
容器,如果你只想连接你的 db
容器到 web
容器。属性 ports
仅用于从主机到达容器。
关于mysql - docker-compose rails 与 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39907266/