Я использую rails + Redis + Postgres с docker, и мне удалось наконец заставить все работать, единственное, что я не могу понять, это база данных. кажется, что независимо от того, что я поставил для хоста / имени пользователя / пароля, я всегда получаю отказ в соединении
, вот мои настройки:
docker -compose.yml
version: '3.4'
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- database
- redis
ports:
- "3000:3000"
volumes:
- .:/app
- gem_cache:/usr/local/bundle/gems
env_file: .env
environment:
RAILS_ENV: development
database:
image: postgres:12.1
volumes:
- db_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
environment:
POSTGRES_USER: baopals
POSTGRES_PASSWORD: baopals
redis:
image: redis:5.0.7
volumes:
gem_cache:
db_data:
networks:
default:
external:
name: baopals-network
Dockerfile
FROM ruby:2.5.1-alpine
ENV BUNDLER_VERSION=1.16.1
RUN apk add --update --no-cache \
binutils-gold \
build-base \
curl \
file \
g++ \
gcc \
git \
less \
libstdc++ \
libffi-dev \
libc-dev \
linux-headers \
libxml2-dev \
libxslt-dev \
libgcrypt-dev \
make \
netcat-openbsd \
openssl \
pkgconfig \
postgresql-dev \
python \
tzdata \
nodejs
RUN gem install bundler -v 1.16.1
WORKDIR /app
ADD vendor/gems/active_elastic_job-2.0.1 /app/vendor/gems/active_elastic_job-2.0.1
COPY Gemfile Gemfile.lock ./
RUN bundle config build.nokogiri --use-system-libraries
RUN bundle check || bundle install
COPY . ./
ENTRYPOINT ["./entrypoints/docker-entrypoint.sh"]
.env
DB_NAME=baopals_development
DB_USER=baopals
DB_PASSWORD=baopals
DB_HOST=localhost
REDIS_HOST=redis
database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: baopals_development
username: baopals
password: baopals
host: localhost
port: 5432
и, наконец, вот ошибка, с которой я сталкиваюсь
app_1 | PG::ConnectionBad (could not connect to server: Connection refused
app_1 | Is the server running on host "localhost" (127.0.0.1) and accepting
app_1 | TCP/IP connections on port 5432?
app_1 | could not connect to server: Address not available
app_1 | Is the server running on host "localhost" (::1) and accepting
app_1 | TCP/IP connections on port 5432?
Я новичок с docker, поэтому я не уверен, что я просто упустил что-то очевидное здесь