Я новичок в Tomcat, Docker и traefik, и застрял, пытаясь настроить сервер приложений Tomcat в одном узле Docker Swarm с перенаправлением Traefik https. В настоящее время я вижу свой Traefik Dashoard со всеми работающими внутренними и внешними службами, но сам мой веб-сайт и моя страница администратора DBAdmin возвращают сообщения «Время ожидания шлюза» и больше ничего не отображают. Ваша помощь высоко ценится. Заранее спасибо! Ниже приведены шаги, которые я предпринял, и мои настройки:
1. Traefik.toml
<pre>
debug = false
checkNewVersion = true
logLevel = "ERROR"
InsecureSkipVerify = true
# Access log
filePath = "/var/log/traefik/access.log"
format = "common"
#Add named EntryPoints for HTTP and HTTPS
#that all backend have access to
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect] #2nd Force HTTPS
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
# Configure the api provider on port 8080
#with basic authentication method
[entryPoints.dashboard]
address = ":8080"
[entryPoints.dashboard.auth]
[entryPoints.dashboard.auth.basic]
users = ["myuser:$apr1$EbvR0Rs3cr8PRzQGp8a3Wt5apSROCP61"]
[api]
entrypoint="dashboard"
#Enable retry if network error
[retry]
#Letsencrypt configuration with ACME HTTP challenge
[acme]
email = "mail@example.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
[[acme.domains]]
main = "EXAMPLE.COM"
[[acme.domains]]
main = "MONITOR.EXAMPLE.COM"
[[acme.domains]]
main = "DBADMIN.EXAMPLE.COM"
#Define Docker Backend Configuration
[docker]
domain = "example.com"
network = "web"
watch = true
<code>
2. Создайте мостовую сеть, файл acme.json (и chmod 600), затем создайте контейнер traefik с помощью команды:
<pre>
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $PWD/traefik.toml:/traefik.toml \
-v $PWD/acme.json:/acme.json \
-v traefikdata:/traefik \
-p 80:80 \
-p 443:443 \
-l traefik.enable=true \
-l traefik.frontend.rule=Host:monitor.example.com \
-l traefik.port=8080 \
--restart=always \
--network web \
--name traefik \
traefik:1.7.6-alpine
<code>
3. Настроить рой
<pre>
docker swarm init
<code>
4. Создать присоединяемую оверлейную сеть
<pre>
docker network create --driver overlay --attachable <network-name>
<code>
5. Подключите Traefik Container к оверлейной сети
<pre>
docker network connect <network-name> <container-name>
<code>
Регистрация контейнеров в Traefik с помощью файла docker-compose.yml
version: "3.6"</p>
<p>networks:
frontend:
driver: overlay
backend:</p>
<p>services:
myapp:
image: app/app
deploy:
replicas: 3
restart_policy:
condition: on-failure
volumes:
- "./sitedata:/path-to/htdoc/_data"
environment:
DB_NAME: "mydb"
DB_USER: "dbuser"
DB_PASSWORD: "secret"
labels:
- "traefik.enable=true"
- traefik.backend=myapp
- traefik.frontend.rule=Host:myapp.example.com
- traefik.docker.network=frontend
- traefik.port=80
networks:
- backend
- frontend
depends_on:
- mydb</p>
<p>mydb:
image: myapp/db
deploy:
replicas: 3
restart_policy:
condition: on-failure
volumes:
- "./pgdata:/path-to/data/mydata"
environment:
POSTGRES_DB: 'mydb'
POSTGRES_USER: 'dbuser'
POSTGRES_PASSWORD: 'secret'
PGDATA: /path-to/data/mydata
networks:
- backend
labels:
- traefik.enable=false # to specify that Traefik should not expose</p>
<p>adminer:
image: adminer:4.7-standalone
deploy:
replicas: 1
restart_policy:
condition: on-failure
volumes:
- "./path-to/data/data"
labels:
- "traefik.enable=true"
- traefik.backend=adminer
- traefik.frontend.rule=Host:dbadmin.example.com
- traefik.docker.network=frontend
- traefik.port=8080
networks:
- backend
- frontend
depends_on:
- mydb
<code></p></li>
</ol>
<p><strong>7. Run the containers</strong> </p>
<pre>
docker stack deploy -c docker-compose.yml myawesomeapp
<code>
</code>
Результаты
===========
На данный момент я вижу только свою панель инструментов Traefik
Traefik Dashboad
Мой веб-сайт и моя страница dbadmin возвращают сообщения "Gateway Timeout"
Ошибка тайм-аута шлюза с веб-сайта, а также страницы dbadmin