단일 호스트의 여러 Docker 컨테이너 서비스에 대한 SSL 인증서

단일 호스트의 여러 Docker 컨테이너 서비스에 대한 SSL 인증서

docker-compose.yaml저는 Docker를 처음 접했지만 Mosquitto, NodeRED, InfluxDB 및 Grafana와 같은 소수의 서비스로 구성된 시스템을 성공적으로 설정했습니다 . 각각은 서로 다른 포트에 HTTP 엔드포인트를 게시합니다. 이것들은 모두 로컬에서 잘 작동합니다.

이제 클라우드의 호스트로 이동하고 싶지만 Safari에서는 모든 HTTP 연결이 HTTPS/TLS여야 하므로 모든 것에 대한 인증서를 설정해야 합니다. 제가 아는 한, 제게는 두 가지 선택권이 있다고 생각합니다.

  1. SSL 인증서를 사용하도록 각 서비스를 개별적으로 구성합니다. 아마도 docker-compose의 서비스 간에 공유되는 볼륨에 있는 동일한 인증서를 참조하도록 할 수 있을 것입니다.

  2. 아마도 nginx를 이들 각각에 대한 프록시로 설정할 수 있을까요? 이는 컨테이너에 있는 포트의 연결을 다른 컨테이너의 포트로 전달하는 docker-compose의 또 다른 서비스가 될 것입니다.

이 방법 중 어느 것이 더 나은지 잘 모르겠습니다. Let's Encrypt이기 때문에 인증서를 자주 업데이트해야 합니다.

이 문제를 검색했지만 직접적인 해결책을 거의 찾지 못했습니다. 나는 이것이 더 일반적인 문제라고 생각했지만 그렇지 않을 수도 있습니다.

답변1

두 가지 방법 모두 서로 다른 구현이 필요하지만 저는 고전적인 방법을 선호합니다.

엔진엑스:

    Generate a server certificate ( Used by the 4 apps )

    You will need to create 1 Vhost for every app.

    Map the exposed ports to the Vhosts on docker-compose

    Use of certbot for auto renewal  on your docker-compose.

결점:

  You  will have a single entry to your apps ( **Single point of failure** )

  The communication between your NGINX Reverse Proxy and your containers will not be **secured**.

이점: 빠른 구현

권위 있는:

    Generate a server certificate ( Used by the 4 apps )

    Setup SSL differently on every app configuration file.

    Use of certbot for auto renewal on your docker-compose.

이점:느린 구현

관련 정보