Docker 이미지를 생성할 때, 기본 이미지를 기반으로 추가적인 레이어를 더하여 원하는 소프트웨어를 포함시키는 것은 매우 일반적인 작업입니다. Tomcat과 같은 서버를 Docker 이미지에 추가하는 것도 가능합니다. Tomcat을 포함한 이미지를 만들기 위해 Dockerfile을 작성하는 방법은 다음과 같습니다.
아래는 Tomcat을 포함한 Dockerfile의 예입니다. 이 Dockerfile은 eclipse-temurin:21-jdk
이미지를 기반으로 하여 Tomcat을 설치하고, Spring Boot 애플리케이션 JAR 파일을 배포합니다.
# 기본 이미지로 OpenJDK를 사용
FROM eclipse-temurin:21-jdk AS builder
# 작업 디렉토리 설정
WORKDIR /app
# Gradle 빌드 파일 복사
COPY gradlew build.gradle settings.gradle ./
COPY gradle ./gradle
COPY src/main ./src/main
# Spring Boot JAR 파일 빌드
RUN ./gradlew bootJar
# Tomcat 이미지를 기본으로 설정
FROM tomcat:10-jdk21
# 작업 디렉토리 설정
WORKDIR /usr/local/tomcat
# 빌드한 JAR 파일을 Tomcat의 webapps 디렉토리에 복사
COPY --from=builder /app/build/libs/your-app.jar /usr/local/tomcat/webapps/your-app.jar
# Tomcat을 기본 명령어로 설정
CMD ["catalina.sh", "run"]
FROM eclipse-temurin:21-jdk AS builder
:
WORKDIR /app
:
/app
으로 설정합니다.COPY gradlew build.gradle settings.gradle ./
:
RUN ./gradlew bootJar
:
FROM tomcat:10-jdk21
:
COPY --from=builder /app/build/libs/your-app.jar /usr/local/tomcat/webapps/your-app.jar
:
webapps
디렉토리에 복사합니다.CMD ["catalina.sh", "run"]
:
위 예제에서 tomcat:10-jdk21
이미지를 사용하였지만, Tomcat의 버전과 JDK 버전에 따라 다른 이미지를 선택할 수도 있습니다. 필요에 따라 Tomcat의 버전과 JDK 버전을 조정할 수 있습니다.
server.xml
, context.xml
)을 사용자 정의할 경우, 추가적으로 복사하거나 컨테이너 내에서 수정할 수 있습니다.p
옵션을 사용하여 Tomcat의 포트(예: 8080)를 호스트와 매핑합니다.이 방법으로 Tomcat이 포함된 Docker 이미지를 생성할 수 있으며, Spring Boot 애플리케이션을 Tomcat 서버에서 실행할 수 있습니다.