[docker] Dockerfile로 서버에 war 파일 배포하기(feat. jar)

2022. 11. 28. 16:53·docker
728x90
반응형

우선 준비해야할 것은 Dockerfile, 스프링부트에서 빌드된 .war 파일이다

jar 파일로 배포해도 상관없지만, 이번엔 war파일로 서버에 배포할 것이기 때문에...

혹시나해서 jar 파일로 배포하는 Dockerfiles 참고하길 바란다.


1. jar 파일 배포 Dockerfile 내용(참고용)

FROM openjdk:11
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar

ARG ENVIRONMENT
ENV SPRING_PROFILES_ACTIVE=${ENVIRONMENT}

# ENTRYPOINT ["java","-jar","/app.jar"]
# 설정파일을 분리해서 사용할 때
ENTRYPOINT ["java","-jar","/app.jar"]
# java -jar -Dspring.profiles.active=prod app.jar


2. war 파일 배포 Dockerfile 내용

FROM tomcat:8.5.46-jdk8-openjdk

# tomcat root 경로 삭제
RUN rm -Rf /usr/local/tomcat/webapps/ROOT 

ARG ENVIRONMENT
ENV SPRING_PROFILES_ACTIVE=${ENVIRONMENT}

ARG WAR_FILE=*.war
COPY ${WAR_FILE} /usr/local/tomcat/webapps/ROOT.war

#: docker build --build-arg ENVIRONMENT=dev -t mingty .
#: docker run -it -d --name mingty -p 3100:8080 -v /upload/file:/upload/file -e TZ=Asia/Seoul mingty

jar와 war의 가장 큰 차이 중 하나는 war는 jar와 달리 웹서버, 웹컨테이너 필요하기 떄문에 위와 같이

[1]번은 docker에서 openjdk:11 이미지를 다운받아 jar를 실행시키고...

[2]번은 docker에서 외장 tomcat을 사용하여 배포하여 실행시키는 방식으로 서술하였다.

이번엔 war 배포를 할 예정이기에 [2]번으로 기술한다.


한 줄씩 내용을 설명하자면...

FROM tomcat:8.5.46-jdk8-openjdk

 

tomcat:8.5.46-jdk8-openjdk 의 도커 이미지로 부터 아래 내용이 실행되는 것이다.

RUN rm -Rf /usr/local/tomcat/webapps/ROOT

이 해당 도커 이미지 기본 세팅으로는 /usr/local/tomcat/webapps/ROOT 경로에 ROOT.war 파일이 올려지면 ROOT 디렉토리가 생성되며, 자동으로 실행된다.


그래서 초기화를 위함으로 위와 같이 ROOT 디렉토리를 삭제한다.

ARG ENVIRONMENT
ENV SPRING_PROFILES_ACTIVE=${ENVIRONMENT}

이 명령어는 배포서버에 따라 분기하기 위해... 예를 들어
application-dev.yml
application-prod.yml 등등...

나누어져있다면, 환경변수를 통해 분기되게 설정할수도 있다.

 

ARG WAR_FILE=*.war
COPY ${WAR_FILE} /usr/local/tomcat/webapps/ROOT.war

Dockerfile 과 .war 파일이 서버 내부에서 같은 경로에 위치에서 war 파일을 찾는다.
그 후, 도커 컨테이너 내부 /usr/local/tomcat/webapps/ROOT.war 경로에 war 파일을 복사하여...
자동으로 외장 tomcat을 실행하게 한다.

docker build --build-arg ENVIRONMENT=dev -t mingty .

 

위와 같이 docker build 명령어를 사용하여 docker image를 생성하고...
docker run 실행하여 사용한다.

728x90
반응형

'docker' 카테고리의 다른 글

Dockerfile과 Docker Compose를 이용한 애플리케이션 배포  (5) 2024.09.27
[docker] Dockerfile과 쉘 스크립트를 이용하여 스프링부트에서 빌드한 war파일 인스턴스 자동화 실행시키기  (0) 2022.11.30
[docker] oracle 19c 설치  (0) 2022.04.06
[docker] gitlab(깃랩) 설치  (0) 2022.03.31
[docker] node 설치  (0) 2022.03.28
'docker' 카테고리의 다른 글
  • Dockerfile과 Docker Compose를 이용한 애플리케이션 배포
  • [docker] Dockerfile과 쉘 스크립트를 이용하여 스프링부트에서 빌드한 war파일 인스턴스 자동화 실행시키기
  • [docker] oracle 19c 설치
  • [docker] gitlab(깃랩) 설치
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    css block
    ubuntu
    Rust lang
    css float
    자바 for문
    자바 생성자
    Java Array
    에디터 팁
    gitlab 설치
    vue 설치
    SSL 인증서
    java casting
    mysql db
    css tb
    VS Code 팁
    리눅스 설치
    클론코딩
    vue cli
    servlet class
    티스토리 자동화
    Node
    브라우저 자동화
    프런트엔드
    css transition
    css table
    자바 클래스
    자바 배열
    오류
    nginx ssl 적용
    rust linux
    nginx ssl 설정
    docker
    jsp include
    nginx
    자바 exception
    React Compiler
    vscode
    jsp parameter
    AI 코딩 에이전트
    lang rust
    css perspective
    proxy pass
    자바 객체 지향
    러스트
    spring java
    svelte
    ssl 인증서 발급
    css list
    API 설계
    Extension Bisect
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[docker] Dockerfile로 서버에 war 파일 배포하기(feat. jar)
상단으로

티스토리툴바