Docker uruchomienie w jednym kontenerze servera www oraz fausta

0

Mam problem z uruchomienie w kontenerze w jednym momencie serwera dla Django oraz fausta.
Na localhoscie uruchamiam w 2 terminalach, jednak w przypadku dockera nie wiem jak takie coś zrobić, aby za pomocą docker run uruchomic i serwer www i fausta.

Poniżej zamieszczam pliki dla dockera. W poniższym przypadku odpala się faust, pobiera dane, jeżeli jakieś nowe są, ale nie odpala się serwer WWW

Plik Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED=1

WORKDIR /server

COPY requirements.txt /server/

COPY Docker/entrypoint.sh /server/
RUN chmod +x /server/entrypoint.sh

RUN pip install -r requirements.txt

COPY . /server/

RUN python /server/manage.py makemigrations 
RUN python /server/manage.py migrate

EXPOSE 8002

ENTRYPOINT ["/server/entrypoint.sh"]

Plik entrypoint.sh

#!/bin/sh
set -e


PORT=8002

cd /server

echo "starting 0.0.0.0:${PORT}..."

python manage.py migrate
python manage.py makemigrations events
python manage.py migrate

faust -A app.faust:app worker -l info
python manage.py runserver 0.0.0.0:${PORT}
1

Jeżeli chcesz sobie zautomatyzować odpalanie kilku serwisów na raz, to radzę poczytać o docker-compose.

0

@part: docker-compose to nie wykorzystuje się, kiedy chcemy odpalić wiele kontenerów? Bo w moim przypadku jest jeden kontener.

0
Michalk001 napisał(a):

@part: docker-compose to nie wykorzystuje się, kiedy chcemy odpalić wiele kontenerów? Bo w moim przypadku jest jeden kontener.

Tak, ale nie będzie prościej/czyściej zrobić osobny kontener na kafke i osobny na django?

0

Kafka jest osobno, ja tutaj potrzebuję odpalić komunikację apki z Kafką. Na localhoscie odpalam w jednym terminalu faust -A app.faust:app worker -l info,
a w drugim python manage.py runserver 8002.
I moim problemem jest, że nie wiem jak odpalić to na raz w docker. Bo albo odpali się serwer albo odpali się nasłuch na kafkę.

1

Nie wiem co to faust :p ale jeśli chodzi o linuxa.
Do lini 15 nigdy nie dochodzi więc się nie odpala. Odpal linie 14 w backgroundzie i przekieruj logi do pliku.

faust -A app.faust:app worker -l info &> faust.log &
python manage.py runserver 0.0.0.0:${PORT} &> server.log &
0

@Schadoow: dzięki za pomoc i widzę, że nawet kod podałeś

1 użytkowników online, w tym zalogowanych: 0, gości: 1