Dockerfile概要
公式
Dockefile
すでに出来ているイメージに色々と自分で弄って
弄って出来たイメージを作成することができる。
あとは弄って出来たイメージを利用すれば良い。
https://gyazo.com/9c53b83ab038d26e935c0c40f9a4b0c6
RUNなどできるだけ1行でできるものは1行でやる
(分ければ分けるだけ レイヤが増えてしまう)
ボリューム
3種類ある
語側のDockerのシステムが管理されている部分に名前をつけて、ボリュームを作成する
このボリュームがコンテナ側で共有される
上の名前をつけないバージョン ハッシュ値が自動で振られる 他のコンテナからのネットワークを介してアクセスしづらいので名前付きボリュームを使ったほうが良い
マウント 今のホストのディレクトリを コンテナと共有する
code: Dockerfile
# イメージを指定する
FROM python:3.9-alpine
# メタデータ (作者やバージョンなど)
LABEL com.example.vendor="ACME Incorporated" \
com.example.label-with-value="foo" \
version="1.0"
# 環境変数を設定できる (イメージ作成時のRUNコマンドやサブプロセスに引き継がれる)
ENV work="/app"\
name="sample"
# 今作るイメージの作業のワークディレクトリの設定
# このイメージのインスタンスに入ったときもこのディレクトリになっている
WORKDIR ${work}
# 実行するコマンド (シェル形式)
RUN echo ${name}
# ファイルをコピーする
# ADDは圧縮ファイルを展開する かつ URLを指定できる
# ホスト:作成イメージパス
COPY .gitignore .gitignore
# Dockerの管理のもとでシステムに決められたパスにストレージ領域を作成する
# マウントとは異なる(マウントはホストおnディレクトリを共有すること)
VOLUME /docker-data
# docker runでこのイメージからインスタンスが作られたときに実行されるコマンド
# シェル形式を使うとSIGTERMを受け取るのが/bin/shでコマンドがシグナルを受け取らない