[Docker] Docker HTTPS 적용

2024. 2. 17. 23:14Docker/사용

[Docker] Docker HTTPS 적용

 

[Spring] HTTPS 적용하기 (tistory.com)

 

[Spring] HTTPS 적용하기

[Spring] HTTPS 적용하기 [HTTP] HTTPS란? (tistory.com) [HTTP] HTTPS란? [HTTP] HTTP / HTTPS란? 학습하는 웹 프로젝트에 HTTPS를 적용하기 위해 HTTPS를 먼저 알아보게 되었다. 기존 HTTP는 인터넷상에서 데이터를 주고

skyriv312079.tistory.com

 

이전에 local 환경에서 https를 적용시키는 것을 해봤다. 로컬에서 https로 작동하는 것을 확인했으니 이제는 해당 사항을 docker에서 사용할 수 있도록 적용하려고 한 과정을 기록하려고 한다. 과정은 다음과 같다. 

 

  1. https 적용이 된 프로젝트의 jar 파일을 새롭게 빌드
  2. dockerfile 수정
  3. docker compose 파일 수정
  4. 만들어진 컨테이너를 통해 포스트맨으로 테스트

 

DockerFile 수정

 

1번의 빌드과정은 단순한 빌드 과정이므로 생략했다. HTTPS를 적용하기 위해서는 해당 도커 이미지에도 이전에 만들었던 SSL / TLS key가 존재해야 한다. 그래서 DockerFile에서는 key의 경로에서 key를 복사해서 이미지 내의 폴더에 넣어주는 명령어를 추가해야 한다. 또한 HTTPS로 변하면서 port 번호도 8443으로 변경하였기에 port번호도 수정해 주었다.

FROM openjdk:17
ARG JAR_FILE=build/libs/*.jar
COPY src/main/resources/keystore.p12 /etc/ssl/ 
COPY ${JAR_FILE} app.jar
EXPOSE 8443
ENTRYPOINT ["java", "-jar","/app.jar"]

 

Docker compose 수정

 

 이제 Docker compose 파일을 수정할 차례이다. Docker compose 파일에서는 다음과 같은 부분을 추가해야 한다. 추가해야 하는 부분은 compose에서 관리하는 backend 컨테이너에 key와 관련된 설정들을 입력하는 것이다. 각각 이전 과정에서 다루었던 내용들이며 해당 내용을 본인의 key에 맞게 작성을 해서 추가해 주면 된다.

  backend:
    environment:
      SERVER_PORT: 8443
      SERVER_SSL_KEY_STORE: /etc/ssl/keystore.p12
      SERVER_SSL_KEY_STORE_PASSWORD: [key 설정 시 입력한 비밀번호]
      SERVER_SSL_KEY_STORE_TYPE: PKCS12
      SERVER_SSL_KEY_ALIAS: myapp
    ports:
      - 8443:8443

 

최종적으로 완료된 docker compose 파일은 다음과 같다. 

version: '3.8'

services:
  database:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 1234
      MYSQL_DATABASE: test
    ports:
      - 3306:3306
    volumes:
      - /Users/skyriv213/Desktop/board_Be/test/mysql/conf.d
  backend:
    build:
      dockerfile: Dockerfile
    restart: always
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://database:3306/test?useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 1234
      SERVER_PORT: 8443
      SERVER_SSL_KEY_STORE: /etc/ssl/keystore.p12
      SERVER_SSL_KEY_STORE_PASSWORD: [key 설정 시 입력한 비밀번호]
      SERVER_SSL_KEY_STORE_TYPE: PKCS12
      SERVER_SSL_KEY_ALIAS: myapp
    ports:
      - 8443:8443
    depends_on:
      - database

 

PostMan 테스트

 

기존 터미널에서 docker compose up 명령어를 통해 해당 컨테이너 실행

docker compose up

 

실행이 된 것을 확인 후 docker desktop에서 주어진 compose 파일이 컨테이너들을 잘 실행했는지 확인

docker desktop에서 작동하는 컨테이너 확인

 

실행된 컨테이너로 url과 method를 맞춰 요청을 보내고 성공한 화면이다.

postman 회원가입 테스트