2024. 2. 17. 23:14ㆍDocker/사용
[Docker] Docker HTTPS 적용
[Spring] HTTPS 적용하기 (tistory.com)
이전에 local 환경에서 https를 적용시키는 것을 해봤다. 로컬에서 https로 작동하는 것을 확인했으니 이제는 해당 사항을 docker에서 사용할 수 있도록 적용하려고 한 과정을 기록하려고 한다. 과정은 다음과 같다.
- https 적용이 된 프로젝트의 jar 파일을 새롭게 빌드
- dockerfile 수정
- docker compose 파일 수정
- 만들어진 컨테이너를 통해 포스트맨으로 테스트
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 desktop에서 주어진 compose 파일이 컨테이너들을 잘 실행했는지 확인
실행된 컨테이너로 url과 method를 맞춰 요청을 보내고 성공한 화면이다.
'Docker > 사용' 카테고리의 다른 글
[Docker & Git Action] 이미지, 컨테이너 ~ 깃액션 사용까지 정리 (1) | 2024.09.29 |
---|---|
[docker] spring boot 배포하기 (0) | 2023.12.27 |