#ruby-on-rails #postgresql #docker #digital-ocean
#ruby-on-rails #postgresql #docker #digital-ocean
Вопрос:
Я использую postgres:9.4.5
изображение для своего проекта, используя dockers
on digitalocean
droplet.
Ниже приведены docker-compose.yml
конфигурации для postgres
.
db:
# use the preferred version of the official Postgres image
# see https://hub.docker.com/_/postgres/
build: .
# build with a different Dockerfile
dockerfile: Dockerfile-pg
# persist the database between containers by storing it in a volume
volumes:
- postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
POSTGRES_USER: XXX
Внутри Dockerfile-pg
у меня есть следующие конфигурации
FROM postgres:9.4.5
EXPOSE 5432
Когда я build
запускаю изображения, я получаю следующее error
PG::ConnectionBad (FATAL: pg_hba.conf rejects connection for host "172.17.0.1", user "XXX", database "XXX", SSL off ):
Я уже установил следующую строку, чтобы разрешить все подключения в postgresql.conf
файле
listen_addresses = '*'
внутри pg_hba.conf
файла я также настроил следующую строку, чтобы разрешить все подключения
host all all 0.0.0.0/0 trust
Я также настроил local
среду с таким же configurations
значением в моей локальной системе. На моем локальном компьютере все работает нормально. На сервере также все работало нормально digitalocean
несколько дней назад.
Я не знаю, почему он пытается подключиться с этого IP 172.17.0.1
. Я настроил HOST_IP
для postgres
того, который является моим droplet ip
.
Я не знаю, почему я получаю это error
. Я перепробовал все, чтобы это исправить.
Пожалуйста, помогите мне!
Комментарии:
1. Вы перезапустили базу данных?
2. Нет, для развертывания я использовал обычные команды docker-compose для «сборки» и «обновления» образов docker
3. Я перезапустил базу данных, но все еще получаю ту же ошибку
Ответ №1:
Проверьте свой pg_hba.conf
файл. У вас могут быть параметры, которые вы не добавили, такие как
host all pgdbadm 0.0.0.0/0 md5
Этот pgdbadm известен по учетной записи, созданной хакерами, занимающимися крипто-майнингом.
Ответ №2:
Добавьте ?ssl= true amp;sslmode=require к вашему datasourse.url. Например.
url: ${db.url:jdbc:postgresql://${db.host:localhost}:${db.port:5432}/${db.name:my_db}}?ssl=trueamp;sslmode=require