В этом посте я покажу, как подавать простое приложение для колбы с надписей, бегая в контейнере Docker.
Давайте начнем с создания минимального применения в колбе:
from flask import Flask app = Flask(__name__) @app.route('/') @app.route('/index') def index(): return 'Hello world!'
Далее, давайте напишем команду, которая запустит сервер буроинства:
#!/bin/sh gunicorn --chdir app main:app -w 2 --threads 2 -b 0.0.0.0:8003
Параметры в значительной степени являются самоэкспланирующими: мы говорим о надзоре за 2 рабочих процессов, выполняя 2 потока в каждом. Мы также принимаем соединения извне и переоцениваем порт по умолчанию овиновника (8000).
Наш основной Dockerfile:
FROM python:3.7.3-slim COPY requirements.txt / RUN pip3 install -r /requirements.txt COPY . /app WORKDIR /app ENTRYPOINT ["./gunicorn_starter.sh"]
Давайте построим наше изображение:
docker build -t flask/hello-world .
и беги:
docker run -p 8003:8003 flask/hello-world
Теперь мы должны быть в состоянии получить доступ к нашей конечной точке:
$ curl localhost:8003 Hello world!
Бонус – Makefile
Давайте создадим простое Makefile Это позволяет нам строить, запускать и убивать наше изображение/контейнер:
app_name = gunicorn_flask build: @docker build -t $(app_name) . run: docker run --detach -p 8003:8003 $(app_name) kill: @echo 'Killing container...' @docker ps | grep $(app_name) | awk '{print $$1}' | xargs docker
Теперь мы должны быть в состоянии бежать:
# build Docker image make build # run the container make run # destroy it make kill
Оригинал: “https://dev.to/marounmaroun/running-docker-container-with-gunicorn-and-flask-4ihg”