我正在尝试在docker中运行基本的rails + mysql应用程序。 我的码头组成如下:
version: '2'
services:
db:
image: mysql:5.7.12
ports:
- "3307:3306"
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
web:
build: .
command: bundle exec rails s -p 3000
volumes:
- .:/app
ports:
- "3000:3000"
links:
- db
depends_on:
- db
我的数据库使用docker-compose up db
构建得很好,但我的网络服务似乎无法找到数据库。试图将所有内容组合在一起docker-compose up
会产生以下错误:
web_1 | /usr/local/bundle/gems/mysql2-0.3.21/lib/mysql2/client.rb:70:in `connect':
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) (Mysql2::Error)
如何让容器正确链接?
编辑:答案在我的database.yml文件中。根据接受的答案,我不得不改变
development:
host: localhost
我的database.yml
到中的行
development:
host: db (my container name)
port: 3306
然后另外使用docker-compose.yml
MYSQL_DATABASE
名称更新我的database.yml
数据库环境
答案 0 :(得分:2)
您需要为rails应用程序定义数据库设置。 现在,app尝试连接到本地数据库。
无法通过socket'/var/run/mysqld/mysqld.sock'连接本地MySQL服务器(2)(Mysql2 :: Error)
尝试以下设置:
host: db
port: 3306