こんにちは。
本日はDockerfileを使用してみます。
概要
SpringBootアプリケーションにて作成したjarを動かすための環境を作成。
imageを作成し、そのimageを使用してコンテナを作ってみます。
Dockerfileとjarファイルの配置は以下とします。
- Dockerfile - springbootapp01 - demo - target - demo.jar
Dockerfileの作成
FROM adoptopenjdk/openjdk11:alpine-jre WORKDIR /app COPY ./springbootapp01/demo/target/demo.jar . CMD ["java", "-jar", "demo.jar"]
今回使用したコマンドについて記載します。
FROM
ベースイメージの指定を行います。
WORKDIR
以降のRUN、CMD、ENTRYPOINT、COPY、ADDの
命令コマンドを実行する際のディレクトリを指定。
指定したディレクトリが存在しない場合、作成します。
COPY
ファイルやディレクトリのコピーを行います。
記載形式は以下です。
COPY <コピー元>... <コピー先> # もしくは COPY ["<コピー元>",... "<コピー先>"]
Linuxのコンテナの場合、--chown
を使用することが可能です。
CMD
指定したコマンドを実行します。
Dockerfileに1度だけ記載することが可能で、
複数記載がある場合は、最後のCMDが実行されます。
Dockerfiel実行時の引数で上書きが可能です。
記載形式は以下の3パターンで記載することが可能です。
# exec形式 CMD ["実行ファイル","パラメータ1","パラメータ2"] # ENTRYPOINT命令に対するデフォルトのパラメータとして扱う形式 CMD ["パラメータ1", "パラメータ2"] # シェル形式 CMD コマンド パラメータ1 パラメータ2
imageの作成
Dockerfileを使用してimageを作成します。
imageの一覧は以下のコマンドで確認できます。
$ docker image ls
以下のコマンドを実行して、imageを作成します。
$ docker image build -t appimage .
-t
オプションを使用して、imageの名前を指定しています。
コンテナの作成
先程作成したimageを使用してコンテナを作成します。
以下のコマンドを実行して作成ができます。
$ docker container run -dit --publish 8080:8080 --name app01 appimage
imageの指定部分に先程作成したimageを指定しています。
新しくコンテナを作成する場合でも、同じimageを使用するので
同一のコンテナを作成することができます。
参考
以上です。