[java] Jigsaw 모듈과 도커 컨테이너의 연동 방법

도커(Docker)는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션의 배포, 관리, 실행을 쉽게 할 수 있습니다. 이번 글에서는 Jigsaw 모듈 시스템과 도커 컨테이너를 함께 사용하는 방법에 대해 알아보겠습니다.

1. Jigsaw 모듈 시스템

Jigsaw는 자바 9부터 도입된 모듈 시스템으로, 자바 애플리케이션을 독립적인 모듈로 분리하여 개발하고 관리할 수 있게 해줍니다. 모듈은 의존성 관리와 충돌 문제 해결을 용이하게 해주며, 런타임 환경에서 필요한 모듈만 로드하여 애플리케이션의 성능과 유지보수를 개선할 수 있습니다.

2. 도커 컨테이너와 Jigsaw 모듈 연동하기

도커 컨테이너 내에서 Jigsaw 모듈을 실행하려면 몇 가지 단계를 따라야 합니다.

단계 1: Jigsaw 모듈 생성

먼저 Jigsaw 모듈을 생성해야 합니다. 모듈은 프로젝트의 클래스와 관련 리소스를 포함하는 디렉토리입니다.

src/
    com/
        example/
            module-info.java
            MyApp.java

모듈 디렉토리 내에는 module-info.java 파일을 포함해야 합니다. 이 파일은 모듈의 의존성 및 수출 패키지를 정의합니다.

단계 2: Dockerfile 작성

도커 컨테이너를 생성하기 위해 Dockerfile을 작성해야 합니다.

FROM openjdk:9-jdk-slim

WORKDIR /app

COPY src/ /app/src/
COPY resources/ /app/resources/
COPY module-info.java /app/

RUN javac -d mods src/com/example/*.java
RUN jar --create --file app.jar --main-class=com.example.MyApp --module-path mods --module com.example

CMD ["java", "--module-path", "mods", "--module", "com.example/com.example.MyApp"]

Dockerfileopenjdk:9-jdk-slim 베이스 이미지를 사용하고, 작업 디렉토리를 /app로 설정합니다. 그런 다음, src/, resources/, module-info.java 파일을 컨테이너 내의 /app 디렉토리로 복사합니다.

RUN 명령어로 javac를 사용하여 소스 파일을 컴파일하고, jar 명령어로 JAR 파일을 생성합니다. 마지막으로, CMD 명령어로 애플리케이션을 실행합니다.

단계 3: 도커 이미지 빌드

Dockerfile을 기반으로 도커 이미지를 빌드해야 합니다. 다음 명령어를 실행하여 빌드할 수 있습니다.

docker build -t my-app .

단계 4: 도커 컨테이너 실행

이제 도커 이미지를 사용하여 컨테이너를 실행할 수 있습니다.

docker run my-app

결론

이제 Jigsaw 모듈 시스템과 도커 컨테이너를 함께 사용하는 방법에 대해 알아보았습니다. Jigsaw 모듈을 사용하는 것은 애플리케이션의 관리와 유지보수를 향상시키는 좋은 방법입니다. 도커 컨테이너를 사용하면 애플리케이션을 쉽게 배포하고 실행할 수 있습니다.