@kkolorid

Как в Docker эмулировать работу веб сервера Flask через SSL?

Доброго времени суток. Суть проблемы: разворачиваю на Docker Compose несколько контейнеров, из которых первый - телеграм бот на питоне и второй - веб сервер на Flask для работы из бота с Web App виджетом. Для загрузки в Web App своего бота веб страницы, она должна быть на адресе с SSL сертификатом (доступна по https:// - требования ТГ). Как правильно организовать работу в таком случае? Желательно что бы это с легкостью потом поднялось на сервере с Linux. При этом в покупке домена нет необходимости, желательно даже к IP статическому не привязываться, а позволить как-то контейнеру иметь доступ к порту 443 другого контейнера по ссылке.

Привожу содержание docker-compose.yml на данный момент:
version: '3.7'

services:

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USERNAME}
      MYSQL_PASSWORD: ${MYSQL_USER_PASSWORD}
    ports:
      - "6033:3306"
    restart: on-failure
    volumes:
      - dbdata:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - db
    environment:
      PMA_HOST: db
      PMA_PORT: 3306
      PMA_ARBITRARY: 1
    restart: on-failure
    ports:
      - 8081:80

  bot:
    build: .
    command: sh -c "python bot.py"
    depends_on:
      - db
      - phpmyadmin
    env_file:
      - ./.env

  flask:
    build: ./web
    environment:
      - FLASK_ENV=development
      - PYTHONUNBUFFERED=True                   
    restart: on-failure
    volumes:
      - ./web:/web
    ports:
      - "443:443"
    command: sh -c "python main.py"

volumes:
  dbdata:


Пока есть идеи как-то через NGROK пробросить это дело. Но не очень хочется быть зависимым от стороннего сервиса...
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Drno
ну сделай самоподписный сертификат и подставь его в веб сервер
Ответ написан
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
SSL сертификаты привязаны к доменным именам. Для IP можно выпустить только самоподписанные, но с публичной инфраструктурой типа Telegram связаться они не помогут.
IMHO - проще всего купить дешевый домен и использовать Let Encrypt для выпуска сертификатов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы