Helidon Getting Started 2 -Docker-
この記事について
今回は前回の続きで、生成されたDockerfileを起動させるところまでを行います。
Dockerfileの内容を確認
#FROM openjdk:8-jre-slim FROM openjdk:8-jre-alpine RUN mkdir /app COPY libs /app/libs COPY quickstart-se.jar /app CMD ["java", "-jar", "/app/quickstart-se.jar"]
各行では以下を定義しています。
- FROM "基となるイメージを指定":jre8がインストールされたAlpine Linuxイメージを基に
- RUN "ビルド中に実行するコマンドを指定":mkdirコマンドでappディレクトリを作成し
- COPY "ローカルファイルをコンテナの中にコピー":libsとビルドした.jarをコンテナにコピー
- CMD "起動後のコンテナで実行したいコマンドを指定":java -jar /app/quickstart-se.jar を実行
Dockerイメージをビルド
$ docker build -t quickstart-se target
出力
Sending build context to Docker daemon 5.648MB Step 1/5 : FROM openjdk:8-jre-alpine ---> 2e01f547f003 Step 2/5 : RUN mkdir /app ---> Using cache ---> 2a5f46165656 Step 3/5 : COPY libs /app/libs ---> 7cfb246e7503 Step 4/5 : COPY quickstart-se.jar /app ---> 6bcea4b41853 Step 5/5 : CMD ["java", "-jar", "/app/quickstart-se.jar"] ---> Running in 2cc62e0c9ea8 Removing intermediate container 2cc62e0c9ea8 ---> a49d85fd641f Successfully built a49d85fd641f Successfully tagged quickstart-se:latest
作成されたDockerイメージを確認
$ docker image ls
出力
REPOSITORY TAG IMAGE ID CREATED SIZE quickstart-se latest a49d85fd641f 30 second ago 88.6MB
Dockerイメージを起動
docker run
コマンドでコンテナを起動します。
--rm フラグ:コンテナの終了時に、自動的にコンテナをクリーンアップしファイルシステムを削除します
-p フラグ:外部からアクセスされるポート番号:コンテナ側のポート番号を指定します
$ docker run --rm -p 8080:8080 quickstart-se:latest
出力
[DEBUG] (main) Using Console logging 2018.12.17 07:45:07 INFO io.netty.util.internal.PlatformDependent Thread[main,5,main]: Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system instability. 2018.12.17 07:45:07 INFO io.helidon.webserver.netty.NettyWebServer Thread[nioEventLoopGroup-2-1,10,main]: Channel '@default' started: [id: 0xb76b2ecb, L:/0.0.0.0:8080] WEB server is up! http://localhost:8080
アプリの動作確認
$ curl -X GET http://localhost:8080/greet {"message":"Hello World!"}
Dockerイメージからコンテナを起動してアプリが動作しているのが確認できました。
つづいてKubernetesへのデプロイ…の前に一旦休憩します(深夜2時をまわってしまいました)。
ご覧いただきありがとうございました。
この記事はOracle Cloud その2 Advent Calendar 2018 - Adventar17日目です。