@MaxSemenov

Traefik + Docker настройка SSL?

Привет всем, подскажите пожалуйста как правильно настроить SSL сертификат в docker container, имеется 2 проекта со своими контейнерами
PHP
Mysql
Nginx
вот docker-compose.yml проекта:
# Версия docker-compose
version: '3'
# Список наших сервисов (контейнеров)
services:
    composer:
        build: ./docker/composer/
    nginx:
        # используем последний стабильный образ nginx
        build: ./docker/nginx/
        networks:
            - web
        # nginx должен общаться с php контейнером
        links:
            - php
        # монтируем директорию с проектом
        volumes:
            - ./project:/var/www/crm
            - ./docker/nginx/conf:/etc/nginx/conf.d
            - ./docker/nginx/logs/error.log:/var/log/nginx/error.log
            - ./docker/nginx/logs/access.log:/var/log/nginx/access.log
        labels:
            - traefik.enable=true
            - traefik.port=443
            - traefik.http.routers.site_nginx.rule=Host(`example.com`)
            - traefik.http.routers.site_nginx.entrypoints=http

            - traefik.http.routers.site_nginxs.rule=Host(`example.com`)
            - traefik.http.routers.site_nginxs.entrypoints=https
            - traefik.http.routers.site_nginxs.tls=true
            - traefik.http.routers.site_nginxs.tls.certresolver=sample
            - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
            - traefik.http.routers.site_nginx.middlewares=redirect-to-https
    php:
        # у нас свой образ для PHP, указываем путь к нему и говорим что его надо собрать
        build: ./docker/php/

        # этот образ будет общаться с mysql, composer
        links:
            - mysql
            - composer
        networks:
            - web
        # монтируем директорию с проектом
        volumes:
            - ./project:/var/www/crm
            - ./docker/php/php.ini:/usr/local/etc/php/conf.d/40-custom.ini
    mysql:
        image: mysql
        environment:
            MYSQL_DATABASE: "${DB_NAME}"
            MYSQL_ROOT_PASSWORD: "${DB_PASS}"
        networks:
            - web
networks:
    web:
        external: true

Также отдельно в контейнере лежит Traefik.
Вот docker-compose.yml traefik:
version: '3.3'

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/traefik.yml
      - ./acme.json:/acme.json
    labels:
      - traefik.enable=true
      - traefik.http.routers.traefik.rule=Host(`traefik.example.com`)
      - traefik.http.routers.traefik.service=api@internal
      - traefik.http.routers.traefik.middlewares=auth
      - traefik.http.routers.traefik.tls.certresolver=sample
      - traefik.http.middlewares.auth.basicauth.users=user:pass
    networks:
      - web

networks:
  web:
    external: true

traefik.yml
log:
  level: DEBUG

api:
  dashboard: true

providers:
  docker:
    exposedbydefault: false
    endpoint: unix:///var/run/docker.sock
    network: web

entrypoints:
  http:
    address: :80
  https:
    address: :443

certificatesResolvers:
  sample:
    acme:
      tlschallenge: {}
      email: user@gmail.com
      storage: acme.json

log traefik container
Serving default certificate for request: \"example.com\""
  • Вопрос задан
  • 1023 просмотра
Пригласить эксперта
Ответы на вопрос 1
тоже была проблема аналогичная, я решил. У меня проблема крылась в маршрутизаторе который "выше стоял", там ограничения по IP были, которые не давали принять запрос от серверов letsEncrypt.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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