Проблема с подключением к изображению Postgres docker, когда RAILS_ENV не используется = разработка - PullRequest
1 голос
/ 04 апреля 2020

У меня действительно странная проблема, с которой я сталкиваюсь. У меня есть 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...