@DannYLook
Программист

Python как через psycopg2 подключиться к PostgreSQL в Doker?

Приветствую! Я пользуюсь библиотекой psycopg2 во внутри Docker. В Docker установлен postgres. При запуске база данных создается, но код не срабатывая выводя в консоль:
Attaching to db_auth, app-1
app-1    | sh: main.py: unknown operand

С чем может это быть связано? 
Архитектура проекта:
674d5050b5217308905526.png
docker-compose.yaml:
services:
  app:
    build: ./app

    
  db_auth:
    container_name: db_auth
    ports:
      - "5432"
    environment:
      - POSTGRES_PASSWORD=root
      - POSTGRES_USER=admin
    image: postgres:12.22

Dockerfile:
FROM python:alpine

WORKDIR /app

RUN pip install psycopg2-binary

COPY . .

CMD [ "python" "main.py" ]

config.py:
host = "127.0.0.1"
password = "root"
user = "admin"
ports = "5432"
db_name = "db_auth"

main.py:
import psycopg2
from config import host, user, password, db_name

try:
  connection = psycopg2.connect(
    server=host,
    user=user,
    password=password,
    database=db_name
  )
  
  with connection.cursor() as cursor:
    cursor.execute(
      "SELECT version();"
    )
    print(cursor.fetchone())
  
except Exception as _ex:
  print("[INFO] Error while working with PostgreSQL", _ex)
finally:
  if connection: # Завершение работы базы данных
    connection.close()
    print("Завершение работы базы данных")

Буду рад за любую помощь!
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 2
@twistfire92
Python backend developer
Хост базы данных у вас не 127.0.0.1, а db_auth, раз вы все в compose разворачиваете. Попробуйте поменять в конфигах
Ответ написан
@Everything_is_bad
app-1 | sh: main.py: unknown operand
да у тебя даже main.py не запускается, до базы тут даже не доходит. Ну и стандартное, doker и локалхост.

UP
CMD [ "python" "main.py" ]
запятую потерял
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы