Хостинг веб-сайтов из Docker с использованием ddclient, certbot и nginx - PullRequest
0 голосов
/ 04 апреля 2019

Итак, я работаю над сценарием docker-compose для создания реализации веб-хостинга. Вот мой docker-compose.yml

version: '3'

services:
  #this is a supporting app for my main app.
  keymanager:
    image: keymanager
    deploy:
      replicas: 1
    ports:
      - '3220:3220'
    networks:
      - privnet
  #this is my application
  app:
    image: app
    depends_on:
      - keymanager
    deploy:
      replicas: 1
    ports:
      - '3201:3201'
    networks:
      - privnet
      - web
  certbot:
    image: certbot/certbot
    volumes:
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
  nginx:
    image: nginx:alpine
    deploy:
      replicas: 1
    command: '/bin/sh -c ''while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"'''
    volumes:
      - ./nginx:/etc/nginx/conf.d/
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    ports:
      - 8001:80
      - 4431:443
    networks:
      - web
  ddclient:
    image: linuxserver/ddclient
    environment:
      - PGID=1000
      - PUID=1000
      - TZ=Americas/NewYork
    volumes:
      - ./ddclient:/config
    networks:
      - web

networks:
  privnet:
    internal: true
  web:

У меня фоновое приложение, прослушивающее порт 3201, и я полагаю, что nginx настроен на proxy_pass для этого порта в сети докеров. Это моя (очень простая) конфигурация:

server {
    listen 80;
    server_name <domainName.tld>;
    location / {
        return 301 https://$host$request_uri;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }    
}
server {
    listen 443 ssl;
    server_name christopherrutherford.net;

    ssl_certificate /etc/letsencrypt/live/<domainName.tld>/fullchain.pem;
    ssl_certificate /etc/letsencrypt/live/<domainName.tld>/privkey.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass app:3201; 
    }
}

У меня также есть linuxserver/ddclient и мои настройки GoogleDNS. который должен указывать мой домен на мой локальный IP-адрес, и я открыл порты на своем брандмауэре на хосте и маршрутизаторе, но, похоже, я ничего не получу с этим. Я захожу в свой домен и получаю тайм-аут. Я также захожу на порт nginx локально (используя localhost в браузере) и получаю тайм-аут.

вот мой ddclient.conf

protocol=dyndns2

use=web

server=domains.google.com

ssl=yes

login=<from goog.dns>

password=<from goog.ddns>

@.<domainName.tld>

Я что-то упустил в своей конфигурации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...