なんだかGoodVibes

日々の勉強メモです。

【Docker】Dockerfileをつかってみる

こんにちは。
本日は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を使用するので
同一のコンテナを作成することができます。


参考

Docker ドキュメント | Docker ドキュメント

Dockerfile リファレンス — Docker-docs-ja 20.10 ドキュメント



以上です。