Dockerfileの使い方【Docker】
使い方
Docker imageを自分で作成して使用する場合に利用するファイルです。
配置場所は、プロジェクト配下であればどこでも大丈夫です。
Dockerfileを構成するコマンドは公式で案内されているようにいくつかありますが、下記で一例を示します。
FROM golang:1.11-alpine3.8 COPY . /go/src/github.com/work WORKDIR /go/src/github.com/work/src RUN apk --no-cache --update upgrade \ && apk add --no-cache git \ && go get -u github.com/codegangsta/gin \ && go get -u github.com/golang/dep/cmd/dep \ && dep ensure CMD gin -i run main.go dependency.go routing.go
FROM
ベースとするイメージを指定します。COPY
左に記載したローカルファイルを右に記載したディレクトリにコピーします。
「/」から始めると絶対パスに、それ以外はWORKDIRからの相対パスになります。WORKDIR
Dockerfileに記述されたコマンドが実行される基準パスを指定します。RUN
イメージ構築時に実行するOSコマンドを指定します。CMD
コンテナ起動時(イメージ構築後)で実行するコマンドを指定します。
複数のCMDが記述されている場合、最後のコマンドのみ実行されます。
注意点
Dockerfileの各コマンドは別々のコンテナを起動して実行されています。そのため、移動した先でコマンドを実行したい場合、下記のような記述にすると意図した結果を得られません。
RUN cd /dir1 RUN touch memo.txt
memo.txtは「/」に作成されてしまいます。
連続した処理にしたい場合は&&を使って連結します。
RUN cd /dir1 \ && touch memo.txt
上記であれば、「/dir1」配下にmemo.txtが作成されます。
キャッシュ
Dockerビルド時に、Dockerfileにより実行されたコマンドの内容はキャッシュされます。何かをインストールするなど、結果の内容が変わりにくいコマンドはなるべく最初に寄せることで、ビルドにかかる時間を短縮することができます。