Вот мой файл Docker
Код: Выделить всё
# We're using the latest version of Prefect with Python 3.10
FROM prefecthq/prefect:2-python3.10
RUN apt-get update && apt-get install -y curl
# Add our requirements.txt file to the image and install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt --trusted-host pypi.python.org --no-cache-dir
# Add our flow code to the image
COPY . /opt/prefect/flows
WORKDIR /opt/prefect/flows
ENV PREFECT_API_URL="http://127.0.0.1:4200/api"
ENV PREFECT_API_DATABASE_CONNECTION_URL="postgresql+asyncpg://prefect:prefect@host.docker.internal/prefect"
CMD python etl_flows.py && prefect server start
Код: Выделить всё
docker build -t my-prefect-flow .
docker run -d --name postgres -e POSTGRES_USER=prefect -e POSTGRES_PASSWORD=prefect -e POSTGRES_DB=prefect -p 5432:5432 postgres:13
docker run -p 4200:4200 --name prefect-server --link postgres my-prefect-flow
Код: Выделить всё
___ ___ ___ ___ ___ ___ _____
| _ \ _ \ __| __| __/ __|_ _|
| _/ / _|| _|| _| (__ | |
|_| |_|_\___|_| |___\___| |_|
Configure Prefect to communicate with the server with:
prefect config set PREFECT_API_URL=http://127.0.0.1:4200/api
View the API reference documentation at http://127.0.0.1:4200/docs
Check out the dashboard at http://127.0.0.1:4200
, мне выдается ошибка:
Эта страница не работает
127.0 .0.1 не отправил никаких данных.ERR_EMPTY_RESPONSE
Вот мой поток etl_basic
Код: Выделить всё
import prefect
from prefect import task, flow
from prefect import get_run_logger
@task
def say_hi():
logger = get_run_logger()
logger.info("Hello from the Health Check Flow! 👋")
@task
def log_platform_info():
import platform
import sys
from prefect.server.api.server import SERVER_API_VERSION
logger = get_run_logger()
logger.info("Host's network name = %s", platform.node())
logger.info("Python version = %s", platform.python_version())
logger.info("Platform information (instance type) = %s ", platform.platform())
logger.info("OS/Arch = %s/%s", sys.platform, platform.machine())
logger.info("Prefect Version = %s 🚀", prefect.__version__)
logger.info("Prefect API Version = %s", SERVER_API_VERSION)
@flow(name="Health Check Flow")
def health_check_flow():
hi = say_hi()
log_platform_info(wait_for=[hi])
Если я попытаюсь запустить префектный запуск сервера непосредственно на моем локальном компьютере, IP работает, а пользовательский интерфейс правильно маршрутизируется, проблема только в докере
Подробнее здесь: https://stackoverflow.com/questions/787 ... -container