初心者SEのつぶやき

初心者SEのつぶやき

Dockerfileの書き方

やりたいこと

Dockerfileの記載方法を整理する。

Dockerfileの書き方

  • FROM
    FROM {イメージ名}:{タグ} でベースとなるイメージを記載する。
    今回はPython3.6を利用している(dockerhub参照)
  • RUN
    RUN {コマンド}で実行したいコマンドを記載
  • COPY
    COPY {コピー元dir} {コピー先dir}でホストマシンからコンテナ内にファイル(ディレクトリ)をコピーする。
    コピー先に存在しないディレクトリの場合、自動作成してくれる。
  • ENV
    ENV {キー}={値}環境変数の指定
  • ARG
    ENV {キー}={デフォルト値(任意)}で変数の指定
  • WORKDIR
    WORKDIR {ディレクトリパス}で作業ディレクトリを変更する。
  • CMD
    CMD["実行ファイル", "パラメータ1", ..."パラメータN"]でコンテナ実行時のデフォルトコマンドを指定する。 複数ある場合は最後のCMDを実行する。
  • マルチステージビルド
    環境毎にイメージを分けたい場合、fromを複数記載ことで実現可能である。
    --target developmentのようにbuild時にオプションで指定することによって指定した環境でビルドできる。
FROM python:3.6 AS base
ENV env=dev
ARG fuga=fuga
RUN pip install --upgrade pip
COPY . /app
CMD["python3", "main.py"]

FROM base AS development
ENV env=dev

FROM base AS production
ENV env=prod