Настройка новых docker контейнеров после настройки либо nginix + letsencrypt, либо Traefik - PullRequest
0 голосов
/ 25 января 2020

У меня было худшее время, когда сеть работала на моем домене с letsencrypt / nginix или letsencrypt / traefik. Я наконец-то настроил его.

Мне показалось, что Traefik имеет смысл установить, так как это было рекомендовано везде. Чтобы настроить его и работать с моим DNS, я использовал это руководство: https://medium.com/@containeroo / traefik-2-0- docker -a-simple-by-step-by-step-guide-e0be0c17cfa5

С этим руководством по умолчанию мне удалось запустить porttainer и traefik, хотя я не могу получить доступ к traefik, который должен быть на traefik.MYDOMAIN.com. Но porttainer работает на portainer.MYDOMAIN.com.

Вот docker -композиции для этих

traefik docker -композит

version: '3'

services:      
  traefik:
    image: traefik:v2.0
     container_name: traefik
    restart: unless-stopped
 security_opt:
  - no-new-privileges:true
networks:
  - proxy
ports:
  - 80:80
  - 443:443
volumes:
  - /etc/localtime:/etc/localtime:ro
  - /var/run/docker.sock:/var/run/docker.sock:ro
  - ./data/traefik.yml:/traefik.yml:ro
  - ./data/acme.json:/acme.json
environment:
  - CF_API_EMAIL=mail@mail.mail
  - CF_API_KEY=LOLKEY
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.traefik.entrypoints=http"
  - "traefik.http.routers.traefik.rule=Host(`traefik.DOMAIN.com`)"
  - "traefik.http.middlewares.traefik-auth.basicauth.users=USER:PASSWORD"
  - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
  - "traefik.http.routers.traefik-secure.entrypoints=https"
  - "traefik.http.routers.traefik-secure.rule=Host(`traefik.DOMAIN.COM`)"
  - "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
  - "traefik.http.routers.traefik-secure.tls=true"
  - "traefik.http.routers.traefik-secure.tls.certresolver=cloudflare"
  - "traefik.http.routers.traefik-secure.tls.domains[0].main=DOMAIN.COM"
  - "traefik.http.routers.traefik-secure.tls.domains[0].sans=*.DOMAIN.COM"
  - "traefik.http.routers.traefik-secure.service=api@internal"

networks:   
  proxy:
    external: true

Docker сочинять для Portainer

 version: '3'

 services:
  portainer:
image: portainer/portainer:latest
container_name: portainer
restart: unless-stopped
security_opt:
  - no-new-privileges:true
networks:
  - proxy
volumes:
  - /etc/localtime:/etc/localtime:ro
  - /var/run/docker.sock:/var/run/docker.sock:ro
  - ./data:/data
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.portainer.entrypoints=http"
  - "traefik.http.routers.portainer.rule=Host(`portainer.DOMAIN.COM`)"
  - "traefik.http.middlewares.portainer-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.portainer.middlewares=portainer-https-redirect"
  - "traefik.http.routers.portainer-secure.entrypoints=https"
  - "traefik.http.routers.portainer-secure.rule=Host(`portainerDOMAIN.COM`)"
  - "traefik.http.routers.portainer-secure.tls=true"
  - "traefik.http.routers.portainer-secure.tls.certresolver=http"
  - "traefik.http.routers.portainer-secure.service=portainer"
  - "traefik.http.services.portainer.loadbalancer.server.port=9000"
  - "traefik.docker.network=proxy"

networks:
  proxy:
    external: true

Как я уже сказал, teaefik.DOMAIN.COM не работает, а porttainer работает. Я перепробовал кучу больше, но я не смог получить вики. js, или mediawiki, или пару других, настроенных и работающих ... Я установил привидение через интерфейс Porttainers, но не смог go создать поддомен, даже когда я скопировал все переменные окружения из Porttainer в Ghost через GUI. Так что нет go. Мой следующий шаг состоял в том, чтобы попробовать xwiki, смешав две предыдущие вещи с xwiki docker -compose

Итак, вот что:

version: '3'

services:
  web:
image: "xwiki:lts-mysql-tomcat"
container_name: xwiki-mysql-tomcat-web
restart: unless-stopped
security_opt:
  - no-new-privileges:true
networks:
  - proxy
volumes:
  - /etc/localtime:/etc/localtime:ro
  - /var/run/docker.sock:/var/run/docker.sock:ro
  - ./data:/data
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.xwiki.entrypoints=http"
  - "traefik.http.routers.xwiki.rule=Host(`xwiki.DOMAIN.COM`)"
  - "traefik.http.middlewares.xwiki-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.xwiki.middlewares=xwiki-https-redirect"
  - "traefik.http.routers.xwiki-secure.entrypoints=https"
  - "traefik.http.routers.xwiki-secure.rule=Host(`xwiki.DOMAIN.COM`)"
  - "traefik.http.routers.xwiki-secure.tls=true"
  - "traefik.http.routers.xwiki-secure.tls.certresolver=http"
  - "traefik.http.services.xwiki.loadbalancer.server.port=8080"
  - "traefik.http.routers.xwiki-secure.service=xwiki"
  - "traefik.docker.network=proxy"
    depends_on:
  - db
    environment:
  - DB_USER=xwiki
  - DB_PASSWORD=PASSWORD
  - DB_DATABASE=xwiki
  - DB_HOST=xwiki-mysql-db
volumes:
  - /etc/localtime:/etc/localtime:ro
  - /var/run/docker.sock:/var/run/docker.sock:ro
  - ./data:/data
networks:
  - proxy
  db:
image: "mysql:5.7"
container_name: xwiki-mysql-db
volumes:
  - ./xwiki.cnf:/etc/mysql/conf.d/xwiki.cnf
  - mysql-data:/var/lib/mysql
  - ./init.sql:/docker-entrypoint-initdb.d/init.sql
environment:
  - MYSQL_ROOT_PASSWORD=xwiki
  - MYSQL_USER=xwiki
  - MYSQL_PASSWORD=PASSWORD
  - MYSQL_DATABASE=xwiki

volumes:
  mysql-data: {}
  xwiki-data: {}



networks:
  proxy:
   external: true

Это началось !! Я был очень взволнован. Но тогда это не удалось с ошибкой 500. Вот эта ошибка: https://justpaste.it/3ixzf

По сути, я просто хотел бы использовать traefik в качестве шаблона для docker - составить множество приложений для тестирования, но это действительно трудно понять, какие переменные мне не хватает. Я потратил целых 12 часов, пытаясь понять все эти вещи, но есть так много разных руководств и противоречивых советов, и руководство traefik не помогло в моей ситуации ... я бы хотел любую помощь!


Слишком много информации, вот что я хочу / сделал / знаю:

Моя установка - обычное домашнее соединение rnet, сервер - Lenovo Yoga 710 i5. Я могу переадресовывать порты по мере необходимости или DMZ по мере необходимости (я знаю, что это не рекомендуется или не безопасно). У меня есть опция Ubuntu или windows 10 с включенным Hyper-V (если вы думаете, что это будет проще в windows, я могу установить это!). Прямо сейчас у меня есть Ubuntu 18.

Мой провайдер домена - это namecheap, который DNSed для cloudflare. Я ничего не знал о серверах и хостинге, пока не начал все эти вещи за несколько недель go.

Мне удалось после того, как здесь помогли получить безопасный nginx, работающий в соответствии с этим руководством и Я все еще был немного озадачен тем, как все прошло. и я не мог заставить субдомены работать идеально, поэтому я следовал этому руководству linuxserver.io, и оно работало до конца, а потом я сказал «но ... как мне добавить больше вещей» ??

Я знаю, что это включает в себя модифицированные docker -компоненты для моей собственной ситуации, но мне нужен общий шаблон, из которого можно работать (я рад разбивать вещи снова и снова, чтобы учиться), но нужно знать, что У меня есть правильный шаблон. К сожалению, существует миллиард шаблонов.

Так что я решил попробовать traefik, и вы видите результаты выше.

Поскольку я знаю, что моя проблема в основном связана с сетью, я думаю, что ' Я застреваю с командами -p ##: ##, особенно потому, что wikibase запускает 4 (!) отдельных контейнера, вики. js нужна БД, а xwiki выглядит менее сложным, но все еще не работает (как показывает ссылка выше) .

Мне кажется, мне нужно иметь приложение для работы с БД (возможно, mariaDB?, Которое хорошо работает с графикой p), которое работает ... как локально, и затем различные docker приложения используют эту БД. Поэтому я запускаю контейнер БД (или, может быть, просто sudo apt get install mariadb?) И понимаю, что docker -compose db: (бла-бла) должен устанавливать факторы среды, чтобы приложение могло получить к нему доступ.

Но тогда мешает ли traefik или nginx? Я запускаю их? Я понял, что traefik похож на "publi sh it local!" и nginix был гораздо более практичным, но ...

...