Dockerfileの基本コマンド解説
Dockerfileは、Dockerイメージを作成するための設定ファイルです。
OSの指定、ソフトウェアのインストール、環境変数の設定などができ、docker build
コマンドを実行するとDockerイメージが作成されます。
Dockerfileの基本の書き方は下記になります。
# コメント
命令 引数
1. FROM
FROM
は、以降の命令で使うベースとなるイメージを指定するコマンドです。
Dockerfileは必ずFROM
コマンドから始めないといけません。
下記の例では、Ubuntu20.04をベースイメージとして使用しています。
FROM ubuntu:20.04
2. 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=userpass
4. ARG
ARG
は、ビルド時に指定できる変数を定義するコマンドです。docker build
時に--build-arg
オプションで値を渡せます。
下記の例では、VERSION
というビルド引数を定義し、それをベースイメージのタグとして使用しています。
ARG VERSION=latest
FROM myapp:$VERSION
5. 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"]