docker-compose.yaml
저는 Docker를 처음 접했지만 Mosquitto, NodeRED, InfluxDB 및 Grafana와 같은 소수의 서비스로 구성된 시스템을 성공적으로 설정했습니다 . 각각은 서로 다른 포트에 HTTP 엔드포인트를 게시합니다. 이것들은 모두 로컬에서 잘 작동합니다.
이제 클라우드의 호스트로 이동하고 싶지만 Safari에서는 모든 HTTP 연결이 HTTPS/TLS여야 하므로 모든 것에 대한 인증서를 설정해야 합니다. 제가 아는 한, 제게는 두 가지 선택권이 있다고 생각합니다.
SSL 인증서를 사용하도록 각 서비스를 개별적으로 구성합니다. 아마도 docker-compose의 서비스 간에 공유되는 볼륨에 있는 동일한 인증서를 참조하도록 할 수 있을 것입니다.
아마도 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.
이점:느린 구현