Я пытаюсь использовать Postgresql с python. Я использовал следующий докер для создания файла.
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: admin_123
POSTGRES_USER: admin
adminer:
image: adminer
restart: always
ports:
- 8080:8080
С помощью следующего кода я пытаюсь подключиться к базе данных.
conn = psycopg2.connect(
database = "db_test",
user = "admin",
password = "admin_123",
host = "db"
)
Но я получаю эту ошибку.
OperationalError: could not translate host name "db" to address: nodename nor servname provided, or not known
Что я делаю неправильно?
как ? не могли бы вы объяснить? это я читал но не понял
Где работает ваш код Python; на хосте или в контейнере? Если в контейнере, то как вы его запустили?
Я работаю с Jupyter там
Извините, эта ссылка, вероятно, неактуальна здесь. Я думал, вы пытаетесь получить доступ к db внутри adminer, это правильно?
Я пытаюсь получить доступ к БД с помощью python
@TheTechGuy Вы пытаетесь подключиться к базе данных с вашего хост-компьютера?
да, та же машина, на которой работает докер, мне просто нужно вставить данные в базу данных. База данных работает в Docker. и у меня есть блокнот Jupyter, к которому я пытаюсь подключиться. Пока я пытаюсь подключиться, я получил указанную ошибку.






Вам нужно выставить порт BD в докере, составленном следующим образом:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: admin_123
POSTGRES_USER: admin
ports:
- "5432:5432"
А затем подключитесь к локальный: 5432
Другой возможный сценарий,
Проверьте, использовались ли порты другим док-контейнером. Используйте команду:
$ docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a
Вот мой docker-compose.yml
$ кошка docker-compose.yml
version: '3.1' # specify docker-compose version
services:
dockerpgdb:
image: postgres
ports:
- "5432:5432"
restart: always
environment:
POSTGRES_PASSWORD: Password
POSTGRES_DB: dockerpgdb
POSTGRES_USER: abcUser
volumes:
- ./data:/var/lib/postgresql%
Теперь в PgAdmin4 вы можете настроить новый сервер, как показано ниже, для проверки соединения:
host: localhost
port: 5432
maintenance database: postgres
username: abcUser
password: Password
Возможный дубликат docker-compose: разница между сетью и ссылкой