DockerfileのADDにURL

Dockerにおいて表題の通り。ちょっと勘違いをしていた(?)のでメモしておく。

■ 環境

  • Docker 1.8.2

■ 今まで

Dockerfileには下記のように書いていた。下記はZooKeeperをダウンロードして展開するまで。

RUN curl http://ftp.tsukuba.wide.ad.jp/software/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz | tar zx -C /opt

普段Dockerのコンテナイメージを作成する際には、CentOSのコンテナイメージを基に作成しているが、CentOSのコンテナイメージには`wget`コマンドは無い為、`curl`コマンドを用いて1行では書いていた。ただし`tar`コマンドを事前に入れる必要があったのが少々難点に感じていた。

■ ADD

Dockerfile reference > ADD
https://docs.docker.com/reference/builder/#add

上記を見ると、`ADD`にはURLを指定することも可能なようだ。またローカルファイルを`ADD`する場合に、`gzip`/`gzip2`/`xz` などの圧縮形式は展開して配置してくれる。これを混ぜて勘違いしていたようだ。

URLから取得した`tar.gz`のファイルを展開して配置してくれる、と。

`ADD`にURLを指定。

ADD http://ftp.tsukuba.wide.ad.jp/software/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz /

上記では、`/`に`zookeeper-3.4.6.tar.gz`がダウンロードされたままの状態であった。

次いで、Dockerfileと同じディレクトリに`zookeeper-3.4.6.tar.gz`をダウンロードした後に下記Dockerfileを用いて`build`をする。

ADD zookeeper-3.4.6.tar.gz /

この場合には、`/zookeeper-3.4.6`と展開されたものが配置されていた。

URLで取得した`tar.gz`も展開してくれれば良いのに…。

以上。

■ 関連