강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

11 1님의 프로필 이미지
11 1

작성한 질문수

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] Docker Compose로 프론트엔드(Next.js) 실행시키기

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

해결된 질문

작성

·

19

0

services:

my-web-server:

build: .

ports:

- 80:3000

이게 자료 예시인데 HTTPS도 받으려면 ports 부분에 - 443:3000도 써 주면 되는 건가요?

현업에선 어떤 식으로 하나요?

답변 2

1

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 ! 질문 잘해주셨어요 !

질문해 주신 내용에 대해 답변드려볼게요 ~

 

"HTTPS도 받으려면 ports 부분에 - 443:3000도 써 주면 되는 건가요? 현업에선 어떤 식으로 하나요?"

-> 우선 단순히 443:3000을 추가하는 것만으로는 HTTPS가 작동하지 않아요 !

HTTPS를 사용하려면 SSL/TLS 인증서가 필요하고, 포트만 열어준다고 해서 암호화 통신이 자동으로 되는 건 아니에요 !

현업에서는 보통 Nginx 같은 리버스 프록시를 앞단에 두고, 여기서 SSL 인증서를 설정해서 HTTPS를 처리하는 방식을 많이 써요 !

이렇게 하면 Next.js 컨테이너는 내부적으로 HTTP(3000번)로 통신하고, 외부와의 HTTPS 통신은 Nginx가 담당하는 구조가 돼요 !

특히 Let's Encrypt를 사용하면 무료로 인증서를 자동 발급받고 갱신할 수 있어서 많이 활용돼요 !

AWS 같은 클라우드 환경이라면 ALB(Application Load Balancer)나 CloudFront에서 SSL 처리를 해주는 방식도 많이 사용돼요 !

이 경우에도 컨테이너 레벨에서는 HTTP만 처리하고, SSL은 로드밸런서가 담당하게 되는 거예요!

정리하자면, 실제 서비스에서는 컨테이너가 직접 HTTPS를 처리하기보다는 앞단에 Nginx나 로드밸런서를 두고 SSL 처리를 위임하는 방식이 일반적이에요 :)

추가로 궁금하신 점 있으시면 언제든 질문 남겨주세요~~

11 1님의 프로필 이미지
11 1
질문자

감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. 11 1님.

Docker Compose에서 HTTPS 설정에 대한 질문을 주셨네요. 기본적으로 Docker Compose의 ports 부분은 컨테이너의 포트를 호스트의 특정 포트와 매핑하는 역할을 합니다. 따라서 HTTPS 트래픽을 수신하려면 443 포트를 매핑하고 SSL 설정을 갖춘 컨테이너를 준비해야 합니다.

HTTPS 설정을 위한 기본 안내

  1. SSL 인증서 설정: HTTPS를 사용하려면 SSL 인증서를 준비해야 합니다. 이는 Let’s Encrypt와 같은 무료 서비스를 통해 발급받을 수 있습니다.

  2. Nginx 또는 Apache 사용: 대부분의 경우 Nginx나 Apache 같은 웹 서버를 사용하여 SSL 인증서를 설정하고 HTTPS 트래픽을 처리합니다. Docker Compose 파일에서 이러한 웹 서버를 설정할 수 있습니다.

    • 예시:
      ”`yaml
      services:
      my-web-server:
      build: .
      ports:
         - "80:3000"
         - "443:3000"
      
      volumes:
      - ./certs:/etc/nginx/certs
      # nginx 설정 파일에서 SSL과 관련된 설정 추가가 필요
      ”`
  3. 현업에서의 사용:

    • 일반적으로 Nginx나 Apache를 역방향 프록시로 사용하며 SSL을 처리합니다. 직접 애플리케이션 레벨에서 SSL을 처리하기보다는, 컨테이너 앞단에 웹 서버를 두고 SSL 트래픽을 처리하게 합니다.

아래는 유사한 상황에서의 참고 가능한 링크입니다:
- Docker에서 HTTPS 설정하기: SSL 인증서 설정 및 Docker Compose 활용 방안에 대해 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

11 1님의 프로필 이미지
11 1

작성한 질문수

질문하기