Привет всем, подскажите пожалуйста как правильно настроить 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\""