도커(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"]
Dockerfile
은 openjdk: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 모듈을 사용하는 것은 애플리케이션의 관리와 유지보수를 향상시키는 좋은 방법입니다. 도커 컨테이너를 사용하면 애플리케이션을 쉽게 배포하고 실행할 수 있습니다.