Я взял эту статью в качестве руководства по обеспечению установки докера с помощью traefik.
РЕДАКТИРОВАТЬ: Перед этим создайте сеть Docker под названием прокси.
$ docker network create proxy
version: '3'
networks:
proxy:
external: true
internal:
external: false
services:
reverse-proxy:
image: traefik:latest # The official Traefik docker image
command: --api --docker --acme.email="your-email" # Enables the web UI and tells Træfik to listen to docker
restart: always
labels:
- traefik.frontend.rule=Host:traefik.your-server.net
- traefik.port=8080
networks:
- proxy
ports:
- "80:80" # The HTTP port
- "8080:8080" # The Web UI (enabled by --api)
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $PWD/traefik.toml:/etc/traefik/traefik.toml
- $PWD/acme.json:/acme.json
db:
image: mariadb:10.3
restart: always
environment:
MYSQL_ROOT_PASSWORD: r00tPassw0rd
volumes:
- vol-db:/var/lib/mysql
networks:
- internal # since you do not need to expose this via traefik, so just set it to internal network
labels:
- traefik.enable=false
api-1:
image: your-api-image
restart: always
networks:
- internal
- proxy
labels:
- "traefik.docker.network=proxy"
- "traefik.enable=true"
- "traefik.frontend.rule=Host:api1.yourdomain.com"
- "traefik.port=80"
- "traefik.protocol=http"
api-2:
image: your-api-2-image
restart: always
networks:
- internal
- proxy
labels:
- "traefik.docker.network=proxy"
- "traefik.enable=true"
- "traefik.frontend.rule=Host:api2.yourdomain.com"
- "traefik.port=80"
- "traefik.protocol=http"
Примечание. Используйте этот параметр, если вы также хотите включить SSL. Обратите внимание, что это может не работать на локальном сервере, так как letsencrypt не может выполнить задачу для настройки SSL.
создайте пустой файл acme.json и установите для него разрешение 0600
touch acme.json
chmod 0600 acme.json
После настройки всего,
docker-compose config
# но это не обязательно.
, а затем
docker-compose up
Я разместил свой traefik.toml
здесь
Надеюсь, это поможет.
Дайте мне знать, если у вас возникнут какие-либо проблемы.
С уважением,
Kushal.