Я следовал руководству, чтобы докеризировать существующее приложение rails. Приложение успешно работает в development env. Но когда я пытаюсь запустить как , заявляя env, я получаю сообщение об ошибке. Я сохранил тот же конфиг для изложения и разработки. Вот мои связанные файлы:
database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
pool: 10
timeout: 5000
database: <%= ENV['DATABASE_NAME'] %>
username: <%= ENV['DATABASE_USER_NAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
host: db
port: 5432
staging:
<<: *default
pool: 10
timeout: 5000
database: <%= ENV['DATABASE_NAME'] %>
username: <%= ENV['DATABASE_USER_NAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
host: db
port: 5432
application.yml
development:
DATABASE_USER_NAME: 'developer'
DATABASE_PASSWORD: 'qmwneb10PG'
DATABASE_NAME: 'concern_box'
staging:
DATABASE_USER_NAME: 'developer'
DATABASE_PASSWORD: 'qmwneb10PG'
DATABASE_NAME: 'concern_box'
docker -compose.yml
version: '3'
services:
app:
build: .
container_name: cb_app_container
db:
container_name: cb_db_container
image: postgres:9.6
hostname: postgres
ports:
- "5432:5432"
docker -compose.stag.yml
version: '3'
services:
app:
environment:
RAILS_ENV: staging
command: bundle exec rails s -p 80 -b '0.0.0.0'
ports:
- "80:80"
depends_on:
- db
db:
volumes:
- ./tmp/db:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
docker -compose.dev.yml
version: '3'
services:
app:
command: bundle exec rails s -p 3000 -b '0.0.0.0'
stdin_open: true
tty: true
volumes:
- .:/concern-box
ports:
- "3001:3000"
depends_on:
- db
db:
volumes:
- ./tmp/db:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
init. sql
CREATE USER developer WITH PASSWORD 'qmwneb10PG';
CREATE DATABASE concern_box;
GRANT ALL PRIVILEGES ON DATABASE concern_box TO developer;
Я использую следующие команды для вращения контейнеров docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --force-recreate
для разработки env и docker-compose -f docker-compose.yml -f docker-compose.stag.yml up --force-recreate
для запуска в качестве постановочной среды.