Сервер приложений Tomcat в Docker Swarm с Traefik HTTPS Redirect возвращает время ожидания шлюза - PullRequest
0 голосов
/ 22 января 2019

Я новичок в 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>
  1. Регистрация контейнеров в 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

...