Связывание докера приложений Python и Dogress Postgress - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть два контейнера докеров, выполняемых следующими командами:

  • запуск докера --name postgres -v "/ Users / xxx / Desktop / Coding / DockerMounting": / home /-e POSTGRES_PASSWORD = xyz -d postgres

  • docker run -it -v "/ Users / xxx / Рабочий стол / Кодирование / DockerMounting": / home / t -p 5000: 5000 -name some-app --link postgres: postgres -d xxx / ubuntu: последний

Я создал нужного пользователя, базу данных и таблицу в моем контейнере postgres (psql).

Я пытаюсь запустить скрипт на python:

import os

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))

def main():
    flights = db.execute("SELECT origin, destination, duration FROM flights").fetchall()
    for flight in flights:
        print(f"{flight.origin} to {flight.destination}, {flight.duration} minutes.")

if __name__ == "__main__":
    main()

Я получаю следующую ошибку:

  File "list.py", line 6, in <module>
    engine = create_engine(os.getenv("DATABASE_URL"))
  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/__init__.py", line 435, in create_engine
    return strategy.create(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/strategies.py", line 56, in create
    plugins = u._instantiate_plugins(kwargs)

Я знаю одну проблему, которая заключается в том, что мне нужно установить DATABASE_URL env - ноЯ не уверен, что должно быть это значение

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вам нужно указать DATABASE_URL в той же среде, в которой вы запускаете приложение колбы.

То есть, если вы запускаете его из CMD в Windows, вам нужно экспортировать его перед запуском колбы:

setx DATABASE_URL "postgres://<user>:<password>@<host>:<port>/<DBname>"

Или в Linux:

export DATABASE_URL=postgres://<user>:<password>@<host>:<port>/<DBname>

(обычно порт 5432)

Затем запустите приложение.

0 голосов
/ 01 февраля 2019

На основании документации переменная окружения DATABASE_URL должна выглядеть примерно так: postgresql://postgres:xyz@postgres:5432/postgres

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