Как я могу подключиться к базе данных Postgres в контейнере через порт 5432? - PullRequest
0 голосов
/ 02 мая 2019

Я запускаю Docker-контейнер Postgres, используя следующие команды: (ссылка: https://docs.docker.com/engine/examples/postgresql_service/)

docker build -t eg_postgresql .

docker run --rm -P --name pg_test eg_postgresql

Это работает, но номер порта является динамическим. Я могу подключиться к базе данных, указав номер порта. (порт, который я вижу в команде docker ps) Я хотел бы подключиться к этой базе докеров из Python, поэтому мне нужен статический номер порта.

Я попробовал параметры ниже:

-p 127.0.0.1:5432:5432

-p 5432:5432

В этом случае номер порта док-контейнера был установлен как 5432. Однако я не смог подключиться к базе данных. Я получаю docker user does not exist сообщение об ошибке. Какой ваш совет?

1 Ответ

1 голос
/ 02 мая 2019

Я взял Dockerfile по ссылке, которую вы разместили.После построения контейнера с

docker build -t eg_postgresql .

я запустил контейнер с

docker run --rm -p 5432:5432 --name pg_test eg_postgresql (который связывает локальный порт 5432 с контейнерным портом 5432)

и затем я попытался соединиться с

psql -h localhost -p 5432 -d docker -U docker --password

Это работает как шарм.Если вы получили сообщение о том, что пользователь Docker не существует, пожалуйста, дважды проверьте, что все шаги из Dockerfile успешно выполняются во время команды docker build, поскольку создание пользователя Docker выполняется в команде RUN /etc/init.d/postgresql start &&\ psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\ createdb -O docker docker.Также убедитесь, что на вашем локальном хосте не запущен сервер PostgreSQL, чтобы вы могли быть уверены, что пытаетесь подключиться к PostgreSQL внутри контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...