Должны ли Nginx и Flask работать в одном контейнере - PullRequest
1 голос
/ 29 мая 2020

Идеально иметь один процесс на контейнер, но существует сильное сходство между Flask + uwsgi и Nginx.

В настоящее время мы запускаем их вместе, но стоит ли провести рефакторинг?

1 Ответ

3 голосов
/ 29 мая 2020

Да, рефакторинг - хорошая идея. Попробуйте сделать сервис эфемерным и запустить в нем только один главный процесс. Итак, в конечном итоге вам нужно иметь что-то вроде этого:

version: '3.4'
services:
  web:
    build:
      dockerfile: Dockerfile
      context: .
    ports:
      - 8000:8000
    volumes:
      - .:/app/
    env_file:
      - common.env
  nginx:
    restart: always
    image: nginx:1.18-alpine
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./deployment/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./deployment/config.conf:/etc/nginx/nginx.conf
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\";'"
    depends_on:
      - web

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

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