相关this https://stackoverflow.com/questions/31735529/docker-image-from-existing-rails-unicorn-mysql-app线程,我正在尝试创建 2 个容器:1 个使用 Rails 应用程序,另一个使用 MySQL 数据库,但我不断收到Mysql2::Error (Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
在我点击容器的 IP 后,在我的应用程序 production.log 文件中http://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
2015 年 7 月 31 日 编辑
docker 日志显示 unicorn 服务器正在运行:
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
2015 年 7 月 31 日解决方案感谢 @Rico
-
db:migrate
运行时遇到问题,所以我最终手动运行它docker run
命令。确保在创建容器之后或在创建过程中执行此操作,因为它需要链接到数据库容器
- This 链接文章 https://docs.docker.com/userguide/dockerlinks/帮助我了解我的链接尚未创建,因此无法正确沟通。
- 一旦我了解了如何准确地建立链接,我就使用主机和端口值更新了我的database.yml
- 使用此命令检查环境变量的名称
docker run --rm --name <unique-value> --link <db-name> <non-db-image> env
.
- 使用它来查看应用程序容器中链接的值
docker inspect -f "{{ .HostConfig.Links }}" <app-name>