Rails и Docker
TL; DR : я пытаюсь организовать свое приложение rails, используя mysql с docker -композицией. У меня есть один контейнер с сервером mysql, а другой - пассажирский для обслуживания моего приложения. При сборке я получаю неизвестную ошибку хоста.
Здравствуйте,
Я хочу развернуть свое приложение Ruby на Rails с docker -compose. Поскольку я хотел использовать Passenger в качестве сервера приложений, я подумал, что было бы также неплохо использовать их baseimage . Приложение использует mysql в качестве базы данных. Приложение отлично работает в разработке. При попытке создать образ с помощью docker-compose build
я получаю следующую ошибку:
** Invoke db:migrate (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Execute db:migrate
rake aborted!
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (11)
/var/www/school/code/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `
...
Я не совсем понимаю, почему он выдает эту ошибку, так как думал, что когда я использую зависящий от нее, он будет ждать другой контейнер чтобы начать.
Я все еще учусь. Обе рельсы и docker. Вот мои файлы compose и database.yml. Если есть что добавить, пожалуйста, дайте мне знать. Заранее спасибо!
# docker-compose.yml
# Using version 2 because of portainer where its supposed to run later on
version: "2.4"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: school
ports:
- "3306:3306"
app:
build:
context: .
dockerfile: ./docker/passenger.Dockerfile
volumes:
- .:/var/www/school
ports:
- "80:80"
depends_on:
- db
volumes:
db_data: {}
А вот и моя database.yml
# database.yml
default: &default
adapter: mysql2
encoding: utf8
reconnect: false
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
production:
<<: *default
username: root
password: "password"
database: school
port: 3306
host: db