Задать вопрос
@PtrGrd

Как подключить Python к Postgresql внутри Docker-а?

У меня есть скрипт, написанный на Python, который достает из Postgres данные. На локальной машине все работает, в Docker ситуация иная. Не могу подключить Python к Postgres внутри Docker-контейнера. Использую docker-compose в данном случае, под параметр хоста беру ip контейнера с базой данных. Все равно ничего не видит и скрипт не подключается. Помогите мне пожалуйста в данном вопросе

[ Фрагмент кода с подключением к БД в Python ]

try:
	conn = psycopg2.connect(
		database = "users",
		user = "postgres",
		password ="postgres",
		port = "5432",
		host = "172.22.0.2"
	)
	print("[INFO] Подключение с БД установлено")
	cur = conn.cursor()
except:
	print("[INFO] Нет соединения с БД")


[ Сама ошибка, вылетающая при подключении к БД ]
[INFO] Нет соединения с БД
[INFO] Не удалось узнать кол-во записей в БД
var = cur.fetchall()
NameError: name 'cur' is not defined. Did you mean: 'chr'?


[ Dockerfile ]

FROM python:latest

WORKDIR /script/src

COPY ./ /script

COPY requirements.txt /script
COPY src /script/src

RUN apt-get update && apt-get install -y python3-pip
RUN pip install -r /script/requirements.txt
RUN chmod +x /script/src/script.py

CMD ["python3", "/script/src/script.py"]


[ docker-compose.yml ]
version: '3.8'

services:
 script:
  build: ./script/
  command: /script/src/script.py
  container_name: script-mtg
  depends_on:
    - db
  networks:
    - net
 db:
  image: postgres:latest
  container_name: dbpg-mtg
  restart: always
  volumes:
    - ./ .database/postgres/data:/var/lib/postgresql/data
  ports:
    - "5432"
  networks:
    - net


networks:
 net:
  driver: bridge
  • Вопрос задан
  • 3207 просмотров
Подписаться 1 Средний 5 комментариев
Решения вопроса 1
@antares4045
host = "172.22.0.2"
Замените на
server="db"
Или
host="db"
(Точно пайкопгвский синтаксис не помню)
И это вам не помешает, но явным созданием бридж сети и биндом сервисов к ней вы воспроизвели поведение по умолчанию, тоесть написали много всего лишнего.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽