Как я могу сопоставить имя хоста (поддомен) с Docker Container с Traefik? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть несколько Docker-контейнеров, работающих под управлением nginx, который обслуживает веб-приложение.Эти контейнеры работают на виртуальной машине abc.com.Все они требуют https.

Если у меня запущен только один контейнер, я могу получить доступ к контейнеру на abc.com:443 без проблем.Я также могу запустить несколько контейнеров, используя Docker Run и сопоставление портов, где я могу сопоставить порт с 433 следующим образом:

VersionA          0.0.0.0:5000->443             can hit on abc.com:5000
VersionB          0.0.0.0:5001->443             can hit on abc.com:5001
VersionC          0.0.0.0:5002->443             can hit on abc.com:5002

То, что я хотел бы:

vA.abc.com -> VersionAContainer:443
vB.abc.com -> VersionBContainer:443
vC.abc.com -> VersionCContainer:443

Эти контейнеры будутраскручивать и закрывать регулярно и нужно, чтобы их забрал Traefik.Какова правильная команда сборки для traefik и команда запуска для контейнера с использованием меток?

Вот как я безуспешно запускал контейнер Traefik.

sudo docker container run -d --name traefik_proxy \
    --network traefik_webgateway \
    -p 80:80 \
    -p 443:443 \
    -p 8080:8080 \
    --restart always \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --volume /dev/null:/traefik.toml \
    traefik --docker --logLevel=INFO --api \
        --entrypoints="Name:http Address::80 Redirect.EntryPoint:https" \
        --entrypoints="Name:https Address::443 TLS" \
        --defaultentrypoints="http,https"

Вот как я запускал свой контейнер:

sudo docker run -d --name some-nginx \
    --network traefik_webgateway \
    --label traefik.docker.network=traefik_webgateway \
    --label traefik.protocol=https \
    --label traefik.frontend.entryPoints=http,https \
    --label traefik.frontend.rule=Host:something.localhost \ # unsure if this is correct to use local host or abc.com
    --label traefik.port=443 \
    --label traefik.frontend.auth.forward.tls.insecureSkipVerify=true \
    container:latest
...