Spring Boot 프로젝트 배포 왜 궁금했을까 ❓
SSAFY 2학기 공통 프로젝트를 수행하는 과정에서 클라이언트와 통신하기 위해 백엔드 서버를 EC2에 띄워야 했다. NGINX 부분은 팀원분이 설정을 해놓은 상태여서 나는 .jar 파일로 빌드만 해서 넘겨주면 되는 상황이었다.
Dockerfile
- Docker compose를 이용해서 백엔드 API 서버를 배포하는 식으로 아키텍쳐가 구성되어 있어서 Dockerfile을 이용하여 백엔드 API를 빌드하고 이미지화 하는 식으로 진행하려고 한다.
FROM openjdk:17
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 11443
ENV TZ Asia/Seoul
ENTRYPOINT ["java","-jar","/app.jar"]
- Spring boot 3.2.1을 사용하고 자바 17버전을 프로젝트에서 사용중이어서 FROM 명령어를 통해 jdk17을 pull
- ARG 옵션을 이용해서 백엔드 빌드 파일인 .jar 파일의 경로를 설정
- COPY를 통해 위에서 할당한 변수명을 app.jar이름으로 복사
- EXPOSE 옵션으로 컨테이너 포트 11443으로 설정
- ENV TZ Asia/Seoul을 통해 서버 타임 설정
- ENTRYPOINT를 통해 java를 실행하는 parameter를 넘겨 실행
Docker-compose
version: '3.1'
services:
archiview:
build:
context: ./Backend/Archiview
restart: on-failure
container_name: archiview-server
ports:
- 11443:11443
signaling-server:
build:
context: ./Backend/SignalingServer
container_name: signaling-server
restart: on-failure
ports:
- 12080:12080
- 12443:12443
environment:
TZ: "Asia/Seoul"
OPENVIDU_URL: https://i10b105.p.ssafy.io:5443
volumes:
- /opt/openvidu/recordings:/opt/openvidu/recordings
- /opt/openvidu/profiles:/opt/openvidu/profiles
networks:
default:
external:
name: openvidu_default
- Docker-compose를 통해 백엔드 API 서버 배포