Docker Compose
Docker Compose
시작 프로젝트 : tutorial-server-db-integration
완료 프로젝트 : tutorial-server-docker-compose
이 주제에서는 Docker Compose 환경에서 Ktor 서버 애플리케이션을 실행하는 방법을 살펴봅니다. 여기서는
애플리케이션 준비하기
데이터베이스 설정 추출
데이터베이스 연결 구성 튜토리얼에서 생성된 프로젝트는 데이터베이스 연결을 설정하기 위해 하드코딩된 속성을 사용합니다.
PostgreSQL 데이터베이스의 연결 설정을
src/main/resources에 있는 application.yaml 파일을 열고, 다음과 같이
ktor그룹 외부에storage그룹을 추가합니다:yaml이 설정들은 나중에 compose.yml 파일에서 구성됩니다.
src/main/kotlin/com/example/plugins/에 있는 Databases.kt 파일을 열고, 설정 파일에서 저장소 설정을 로드하도록
configureDatabases()함수를 업데이트합니다:kotlin이제
configureDatabases()함수는ApplicationConfig를 매개변수로 받아config.property를 사용해 사용자 정의 설정을 로드합니다.src/main/kotlin/com/example/에 있는 Application.kt 파일을 열고, 애플리케이션 시작 시 연결 설정을 로드할 수 있도록
configureDatabases()에environment.config를 전달합니다:kotlin
Ktor 플러그인 구성
Docker에서 실행하려면 애플리케이션의 모든 필수 파일이 컨테이너에 배포되어야 합니다. 사용하는 빌드 시스템에 따라 이를 수행하는 다양한 플러그인이 있습니다:
- Ktor Gradle 플러그인을 사용하여 fat JAR 생성하기Learn how to create and run an executable fat JAR using the Ktor Gradle plugin.
- Maven Assembly 플러그인을 사용하여 fat JAR 생성하기Sample project: tutorial-server-get-started-maven
이 예제에서는 build.gradle.kts 파일에 Ktor 플러그인이 이미 적용되어 있습니다.
Docker 구성
Docker 이미지 준비
애플리케이션을 도커화(Dockerize)하려면, 프로젝트의 루트 디렉터리에 새 Dockerfile을 생성하고 다음 내용을 입력합니다:
TIP
이 멀티 스테이지 빌드(multi-stage build)의 작동 방식에 대한 자세한 내용은 Docker 이미지 준비를 참조하세요.이 예제에서는 Amazon Corretto Docker 이미지를 사용하지만, 다음과 같은 다른 적절한 대안으로 교체할 수 있습니다:
Docker Compose 구성
프로젝트 루트 디렉터리에 새 compose.yml 파일을 생성하고 다음 내용을 추가합니다:
web서비스는 이미지 내부에 패키징된 Ktor 애플리케이션을 실행하는 데 사용됩니다.db서비스는postgres이미지를 사용하여 태스크를 저장하기 위한ktor_tutorial_db데이터베이스를 생성합니다.
서비스 빌드 및 실행
Ktor 애플리케이션이 포함된 fat JAR를 생성하려면 다음 명령을 실행합니다:
Bashdocker compose up명령을 사용하여 이미지를 빌드하고 컨테이너를 시작합니다:Bash- Docker Compose가 이미지 빌드를 마칠 때까지 기다립니다.
http://localhost:8080/static/index.html로 이동하여 웹 애플리케이션을 엽니다. 태스크를 필터링하고 새로 추가하기 위한 세 개의 폼과 태스크 목록 테이블이 포함된 Task Manager Client 페이지가 표시되어야 합니다.

