Как запустить приложение Docker на защищенном сервере, используя letsencrypt?

Необходимо запустить сервер Horizon через безопасную сеть. Использование этого репозитория github https://github.com/stellar/docker-stellar-core-horizon

После README документ, который я пытался,

    docker run --rm -it -p "8000:8000" --name stellar stellar/quickstart --testnet

это запустит мое приложение горизонта через порт 8000 с http-сервером. Мне нужно запустить через https сервер. Для этого я опробовал несколько вещей, как,

    docker run --rm -it -p "8000:443" --name stellar stellar/quickstart --testnet 

    docker run --rm -it -p "8000:8000" --name stellar stellar/quickstart --testnet docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem 

И еще немного с этими ключами. Попытался перенаправить https-вызовы с сервера на http-вызов с помощью nginx, однако не смог этого сделать.

Пожалуйста, предоставьте способ запуска Docker-контейнера через безопасный сервер.

3 ответа

Решение

До сих пор я узнал, что мы не можем запустить Docker через безопасный сервер. Докер просто просит порт, через который он будет предоставлять услуги. Решение - это простое приложение, использующее докер для обеспечения безопасности. Здесь я не смог понять это приложение, поэтому я использовал для этого nginx.

Мой файл nginx заблокирован примерно так

server {
  listen 9000 ssl;
  server_name 127.0.0.1;

ssl_certificate /etc/letsencrypt/live/staging.globalblockchain.io/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/staging.globalblockchain.io/privkey.pem; # managed by Certbot


  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}

Что я сделал, использовал nginx, чтобы перенаправить вызовы через безопасный 9000 на мой локальный 8000. Таким образом, весь мой контент через порт 8000 был доступен через безопасный 9000, и пользовательский интерфейс смог использовать этот безопасный 9000.

Вы хотите развернуть https версию stellar ядро или в этом случае любое докеризированное приложение, т.е. веб-сервер, вы используете официальное зашифрованное изображение.

Здесь docker-compose.yml файл, в котором вы можете развернуть любой докер-веб-сервер внутри docker compose, который автоматизирует процесс ваших сертификатов.

nginx: build: nginx-image links: - letsencrypt - app environment: - MY_DOMAIN_NAME=DOMAIN_NAME mem_limit: 2g cpu_shares: 256 # restart: always ports: - "80:80" - "443:443" volumes_from: - letsencrypt letsencrypt: image: quay.io/letsencrypt/letsencrypt:latest command: bash -c "sleep 6 && certbot certonly --standalone -d DOMAIN_NAME --text --agree-tos --email your_email --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --verbose --renew-by-default --standalone-supported-challenges http-01" entrypoint: "" volumes: - /etc/letsencrypt - /var/lib/letsencrypt ports: - "80" - "443" environment: - TERM=xterm app: build: app-image ports: - "80"

Замените доменное имя на ваш сервер CNAME и идентификатор электронной почты в вышеуказанном файле. Раздел приложения, в котором вам нужно назначить имя вашего изображения (Dockerized веб-сервер в вашем случае звездное изображение). Тогда просто беги docker-compose build а также docker-compose up запустить его надежно.

Существуют и другие методы, поскольку, как только вы получите сертификат, вы можете просто подключить его к контейнеру, как показано здесь. Или вы можете отредактировать dockerfile как упомянуто в ответе выше и запустите его непосредственно на защищенном порту.

Вам необходимо выполнить настройку прокси в образе докера, используя nginx.

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ...
}

Так как dockerfile доступен в dockerhub, вы можете изменить его работу с https и выставить порт 443. Затем запустите docker как

запуск докера --rm -it -p "8000:443" - имя звездного звездного / быстрого запуска --testnet

https://hub.docker.com/r/stellar/quickstart/~/dockerfile/

Другие вопросы по тегам