Связано с потоком this, я пытаюсь создать 2 контейнера: 1 с приложением для рельсов, а другой с базой данных MySQL, но я продолжаю получать Mysql2::Error (Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
в моей продукции. log file после того, как я нажму IP-адрес контейнера http://192.168.59.103
Связать с Rails/Unicorn/Nginx контейнером с контейнером MySQL
Когда я запускаю контейнер rails, я пытаюсь связать их и получить ошибку, если я укажу неправильное имя MySQL. Что мне не хватает, чтобы успешно связать контейнеры, чтобы полное приложение запускалось в контейнерах?
Рельсы команда Контейнер
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"]
Рельсы database.yml (Dev и испытания являются такими же, как производство)
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 Edit
Журнал докер показывает единорога запустить сервер:
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
. Удостоверьтесь, что вы сделали это после того, как контейнер уже создан или во время процесса создания, так как ему требуется привязка к контейнеру DB.- Это linking article помогло мне понять, что моя ссылка не была создана, поэтому некорректно общаться.
- После того, как я понял, как точно сделать ссылку, я обновить мою database.yml с хостом и портом значения
- Используйте эту команду, чтобы проверить имена ваших переменных ENV
docker run --rm --name <unique-value> --link <db-name> <non-db-image> env
. - Используйте это, чтобы увидеть значение ссылки в вашем приложении контейнера
docker inspect -f "{{ .HostConfig.Links }}" <app-name>
Я должен дать этот вопрос 10 взлетов ... он спас мой день –