710 文字
4 分
Dockerfileについて

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#

ADDCOPYと似ていますが、以下の追加機能があります。

  • 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"]