최근에는 애플리케이션을 컨테이너화하여 배포하는 것이 매우 인기가 있습니다. 특히, 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를 이용한 컨테이너화에 대해 알아보았습니다.