Dockerfileの基本コマンド解説
Dockerfileは、Dockerイメージを作成するための設定ファイルです。
OSの指定、ソフトウェアのインストール、環境変数の設定などができ、docker buildコマンドを実行するとDockerイメージが作成されます。
Dockerfileの基本の書き方は下記になります。
# コメント
命令 引数1. FROM
FROMは、以降の命令で使うベースとなるイメージを指定するコマンドです。
Dockerfileは必ずFROMコマンドから始めないといけません。
下記の例では、Ubuntu20.04をベースイメージとして使用しています。
FROM ubuntu:20.042. RUN
RUNは、イメージのビルド時に実行するコマンドを指定するコマンドです。ソフトウェアのインストールや設定変更に使われます。
下記の例では、パッケージリストを更新し、MySQLをインストールしています。
RUN apt-get update && apt-get install -y mysql-server※apt-getはLinuxディストリビューションで使用されるパッケージ管理システムの一つです。
apt-getを使用することで、パッケージのインストールや削除、更新などを簡単に行うことができます。
3. ENV
ENVは、環境変数を設定するコマンドです。設定した変数は、コンテナ実行時にも参照できます。
下記の例では、MySQLの基本的な設定を環境変数として定義しています。
本来は直接記入するのではなくenvファイルを作成して、それを読み込むようにします。
ENV MYSQL_ROOT_PASSWORD=rootpass
ENV MYSQL_DATABASE=myapp
ENV MYSQL_USER=user
ENV MYSQL_PASSWORD=userpass4. ARG
ARGは、ビルド時に指定できる変数を定義するコマンドです。docker build時に--build-argオプションで値を渡せます。
下記の例では、VERSIONというビルド引数を定義し、それをベースイメージのタグとして使用しています。
ARG VERSION=latest
FROM myapp:$VERSION5. COPY
COPYは、ホストマシンのファイルやディレクトリをDockerイメージ内にコピーするコマンドです。
下記の例では、ホストのrequirements.txtファイルをイメージ内の/app/ディレクトリにコピーしています。
COPY requirements.txt /app/6. ADD
ADDはCOPYと似ていますが、以下の追加機能があります。
- URLからファイルを取得可能
- 圧縮ファイル(tar.gzなど)の自動解凍
下記の例では、指定したURLからapp.tar.gzをダウンロードし、/app/ディレクトリに解凍しています。
ADD https://example.com/app.tar.gz /app/7. CMD
CMDは、コンテナ起動時に実行するデフォルトのコマンドを指定します。ただし、docker run時に別のコマンドを指定すると上書きされます。 下記の例では、コンテナ起動時にPHPのビルトインサーバーを起動します。
CMD ["php", "-S", "0.0.0.0:8000", "-t", "/var/www/html"]8. ENTRYPOINT
ENTRYPOINTは、コンテナ起動時に常に実行されるコマンドを指定します。CMDと組み合わせることで、デフォルトの引数を設定できます。
下記の例では、PHPスクリプトが常に実行され、デフォルトの引数として--versionが設定されています。docker run時に別の引数を指定することで、CMDの値を上書きできます。
ENTRYPOINT ["php", "app.php"]
CMD ["--version"]