У меня действительно странная проблема, с которой я сталкиваюсь. У меня есть Docker изображение для моего postgres дБ и еще одно для моего приложения rails.
Когда я нахожусь в RAILS_ENV=development
(или test
), я вижу изображение postgres разрешить соединения на /var/run/postgresql/.s.PGSQL.5432
, и я также могу убедиться, что сервер postgres работает. Затем я вижу, что мой веб-контейнер создает базы данных на сервере Postgres без проблем. Приложение прекрасно работает .
Когда я нахожусь в RAILS_ENV=production
, я вижу postgres изображение, разрешающее соединения на /var/run/postgresql/.s.PGSQL.5432
, и я могу ВСЕ ЕЩЕ проверить сервер postgres это работает. Но мой веб-контейнер теперь выдает ошибку, что он не может подключиться к базе данных на /var/run/postgresql/.s.PGSQL.5432
(что идентично пути postgres образа!).
Я пытался создание другой среды, идентичной разработке во всех отношениях (environments/development.rb
+ database.yml
), и она все еще не работает. Я понятия не имею, как это может быть.
Я эффективно клонирую среду, которая работает, и заканчиваю тем, что это не так. Это заставляет меня думать, что с сервером разработки есть что-то присущее c, которое заставляет мою docker установку работать.
database.yml
#
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# https://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: <%= ENV['APP_DATABASE_HOST'] %>
username: <%= ENV['APP_DATABASE_USERNAME'] %>
password: <%= ENV['APP_DATABASE_PASSWORD'] %>
development:
<<: *default
database: app_development
staging:
<<: *default
database: app_staging
docker -compose.yml
version: '3.0'
services:
db:
image: postgres:12-alpine
ports:
- 5432:5432
expose:
- 5432
environment:
- POSTGRES_USER=${APP_DATABASE_USERNAME}
- POSTGRES_PASSWORD=${APP_DATABASE_PASSWORD}
volumes:
- ./tmp/db:/var/lib/postgresql/data
webpacker:
image: ${DOCKER_IMAGE_NAME-app}
command: bash -c "export NODE_OPTIONS="--max_old_space_size=4096" && yarn && rm -rf /opt/app/public/packs && bin/webpack-dev-server"
volumes:
- .:/opt/app
ports:
- 3035:3035
web:
image: ${DOCKER_IMAGE_NAME-app}
build:
context: .
args:
precompileassets: 'not'
depends_on:
- db
- webpacker
ports:
- 80:3000
command: bash -c "rm -f tmp/pids/server.pid && /usr/wait-for-it.sh --timeout=0 db:5432 && rails db:create && rails db:migrate && rails s -b '0.0.0.0'"
volumes:
- .:/opt/app