技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

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により実行されたコマンドの内容はキャッシュされます。何かをインストールするなど、結果の内容が変わりにくいコマンドはなるべく最初に寄せることで、ビルドにかかる時間を短縮することができます。



Docker入門(第四回)~Dockerfileについて~ | さくらのナレッジ

Dockerfile リファレンス — Docker-docs-ja 17.06.Beta ドキュメント