【发布时间】:2015-07-31 18:05:32
【问题描述】:
与 this 线程相关,我正在尝试创建 2 个容器:1 个使用 rails 应用程序,另一个使用 MySQL 数据库,但在我点击后,我的应用程序 production.log 文件中不断收到 Mysql2::Error (Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'容器IPhttp://192.168.59.103
当我启动 rails 容器时,我正在尝试链接它们,如果我指定了不正确的 MySQL 名称,则会收到错误消息。成功链接容器以使完整的应用程序在容器中运行,我缺少什么?
Rails 容器命令
docker run --name games-app --link test-mysql:mysql -p 8080 -d -e SECRET_KEY_BASE=test sample_rails_games_app
Here are my files:
Dockerfile
# Publish port 8080
EXPOSE 8080
CMD ["bundle", "exec","unicorn", "-p", "8080"]
CMD ["bunde", "exec", "rake", "db:migrate"]
Rails database.yml(开发和测试与生产相同)
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password: root
host: localhost
#socket: /tmp/mysql.sock
production:
<<: *default
database: weblog_production
7/31/15 编辑
docker 日志显示独角兽服务器正在运行:
docker logs a13bf7851c6d
I, [2015-07-31T18:10:59.860203 #1] INFO -- : listening on addr=0.0.0.0:8080 fd=9
I, [2015-07-31T18:10:59.860583 #1] INFO -- : worker=0 spawning...
I, [2015-07-31T18:10:59.864143 #1] INFO -- : master process ready
I, [2015-07-31T18:10:59.864859 #7] INFO -- : worker=0 spawned pid=7
I, [2015-07-31T18:10:59.865097 #7] INFO -- : Refreshing Gem list
I, [2015-07-31T18:11:01.796690 #7] INFO -- : worker=0 ready
7/31/15 解决方案感谢 @Rico
-
db:migrate运行时遇到问题,所以我最终在docker run命令中手动运行它。确保在容器已创建后或在创建过程中执行此操作,因为它需要链接到数据库容器 - linking article 帮助我了解我的链接没有被创建,因此无法正常通信。
- 一旦我了解了如何准确地建立链接,我确实使用主机和端口值更新了我的 database.yml
- 使用此命令检查环境变量的名称
docker run --rm --name <unique-value> --link <db-name> <non-db-image> env。 - 使用它来查看应用容器中链接的值
docker inspect -f "{{ .HostConfig.Links }}" <app-name>
【问题讨论】:
-
我应该给这个问题 10 ups... 它拯救了我的一天
标签: mysql docker containers