Веб-сервис не работает в контейнере Airflow docker - PullRequest
1 голос
/ 23 апреля 2020

Я создал контейнер docker для воздушного потока, используя Dockerfile. Мне нужно запустить два веб-сервиса, когда кто-нибудь запускает образ docker. Я использую ENTRYPOINT для выполнения запуска веб-службы через сценарий точки входа. Пока я запускаю контейнер docker, работает только один веб-сервис, а другой - нет, но если я захожу внутрь контейнера docker и запускаю один и тот же сценарий, то работает оба веб-сервиса.

Я хочу запустить службы воздушного потока «airflow webserver» и «планировщик воздушного потока»

>entrypoint.sh file 
-----------------------------
#!/usr/bin/env bash
airflow initdb
airflow webserver -D
airflow scheduler -D
exec "$@"
-----------------------------

>Dockerfile
-----------------------------------------------
FROM ubuntu:16.04
LABEL "Created_By"="------"
#Python installation
##pip3
RUN apt update -y && \
    apt upgrade -y && \
    apt-get install -y apt-utils 
RUN apt-get install -y python-setuptools && \
    apt-get install -y python-pip && \
    apt-get install -y python3-pip && \
    pip install --upgrade pip && \
    apt-get install -y libmysqlclient-dev && \
    pip install wtforms==2.2.1 && \
    pip install apache-airflow && \
    pip install apache-airflow[mysql] 

WORKDIR /script/
COPY entrypoint.sh .
RUN chmod -R 0705 /script/
ENTRYPOINT [ "./entrypoint.sh" ]

Я не понимаю, почему работает только одна служба

1 Ответ

0 голосов
/ 23 апреля 2020

Попробуйте запустить контейнер в отдельном режиме:

docker run -d <IMAGE>

Затем введите контейнер следующим образом:

docker exec -it <CONTAINER> bash

Это сработало для меня с вашим кодом как есть.


Примечание : вы не должны запускать несколько служб в одном контейнере. Из Docker документации :

Обычно рекомендуется разделять проблемные области, используя одну услугу на контейнер.

См. puckel / docker -airflow для примера реализации Airflow, использующего отдельные контейнеры для каждой услуги.

...