프로젝트/아카이뷰

[Docker] Spring boot 프로젝트 배포

cks._.hong 2024. 1. 26. 08:52

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 서버 배포