@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\""
  • Вопрос задан
  • 857 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimitrius86
@dimitrius86
Сисадмин. Немного программирую.
тоже была проблема аналогичная, я решил. У меня проблема крылась в маршрутизаторе который "выше стоял", там ограничения по IP были, которые не давали принять запрос от серверов letsEncrypt.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы