[kotlin] 코틀린과 Docker를 이용한 컨테이너화

최근에는 애플리케이션을 컨테이너화하여 배포하는 것이 매우 인기가 있습니다. 특히, Docker는 많은 개발자들이 애플리케이션을 컨테이너로 만들고 배포할 수 있게 해주는 도구입니다.

이번 포스트에서는 코틀린으로 작성된 간단한 웹 애플리케이션을 Docker 컨테이너로 만들고 실행하는 방법에 대해 알아보겠습니다.

코틀린 웹 애플리케이션 만들기

먼저, 코틀린으로 간단한 웹 애플리케이션을 만들어보겠습니다. 아래는 Ktor 프레임워크를 사용하여 간단한 “Hello, World!” 웹 애플리케이션을 만드는 예제 코드입니다.

// Sample.kt
import io.ktor.application.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*

fun main() {
    embeddedServer(Netty, port = 8080) {
        routing {
            get("/") {
                call.respondText("Hello, World!")
            }
        }
    }.start(wait = true)
}

위의 코드는 Ktor로 웹 서버를 만들고 루트 경로에 접속하면 “Hello, World!”를 반환하는 간단한 웹 애플리케이션을 만드는 코드입니다.

Docker 이미지 만들기

이제 이 코틀린 애플리케이션을 Docker 이미지로 만들어보겠습니다. 먼저 애플리케이션을 패키징하기 위해 Gradle을 이용하여 Shadow JAR를 생성합니다.

./gradlew shadowJar

위 명령어를 실행하면 build/libs 디렉토리에 myapp-1.0-all.jar가 생성됩니다. 이제 Dockerfile을 생성하여 Docker 이미지를 빌드할 준비가 되었습니다.

# Dockerfile
FROM openjdk:11-jre

WORKDIR /app
COPY build/libs/myapp-1.0-all.jar /app/myapp.jar

CMD ["java", "-jar", "myapp.jar"]

위의 Dockerfile은 OpenJDK 11 JRE 이미지를 베이스 이미지로 사용하고, 빌드된 JAR 파일을 컨테이너 내부로 복사한 후 애플리케이션을 실행하는 설정을 합니다.

이제 Dockerfile이 있는 디렉토리에서 아래 명령어를 실행하여 Docker 이미지를 빌드합니다.

docker build -t myapp .

Docker 컨테이너 실행하기

이제 Docker 컨테이너에서 애플리케이션을 실행해보겠습니다. 아래의 명령어를 실행하여 Docker 컨테이너를 실행합니다.

docker run -d -p 8080:8080 myapp

이제 웹 브라우저를 열고 http://localhost:8080에 접속하면 “Hello, World!”를 확인할 수 있을 것입니다.

위와 같이 코틀린으로 작성된 웹 애플리케이션을 Docker로 컨테이너화하여 배포하는 방법을 알아보았습니다. 여기서는 간단한 예제를 다루었지만, 복잡한 애플리케이션도 비슷한 방식으로 Docker를 통해 컨테이너화할 수 있습니다.

이상으로 코틀린과 Docker를 이용한 컨테이너화에 대해 알아보았습니다.

참고 자료