🐳Dockerfileまとめ
🐳 FROM
- ベースイメージ(基になるイメージ) ⬅️ DockerHubを参考にする。
FROM <イメージ名>:<タグ名>
# (例)
FROM python:3.10-slim
💪 WORKDIR
- コマンドを実行する作業ディレクトリを指定する。
# (例)
WORKDIR /app
🖨️ COPY
-
ホスト(ローカル)のファイルやディレクトリをDockerイメージにコピーする。
-
COPY . . はすべてコピーしてしまうので、Dockerイメージに不要なファイル(例:.gitディレクトリ、node_modulesなど)が含まれないように注意する。
-
.dockerignore
ファイルを使って除外することが推奨。
# (例)
COPY . .
🏃 RUN
-
イメージにソフトウェアをインストールしたりセットアップの手順を実行したりすることができる。
-
RUNコマンドはできるだけまとめて書く(レイヤーを減らし、イメージサイズを小さくする)。
-
例)RUN apt update && apt install -y apache2 && apt clean
# (例)
RUN apt update && apt install -y apache2
💻 CMD
-
Dockerコンテナが実行されたときにデフォルトで実行するコマンドを定義する。
-
Exec形式(["コマンド", "引数1", "引数2", ...])はプロセス置き換えされるため推奨。
-
シェル形式(CMD コマンド 引数...)はシェルを通じて実行されるが、シグナル伝播が正しくできない場合がある。
# (例)
CMD ["python", "run.py"]
🌳 ENV
Dockerfile内で環境変数を設定する。
# (例)
ENV POSTGRESQL_USER=admin
ENV POSTGRESQL_PASSWORD=password
📝 Sample Dockerfile
# (例)
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "run.py"]