Share

Xでシェア
LINEでシェア

Dockerfileがあるディレクトリから親ディレクトリを参照する

Dockerfileがあるディレクトリから親ディレクトリを参照する際に、詰まったのでメモします。

Dockerfileをビルドしようとすると、普通Dockerfileのディレクトリに移動して

docker build -t service .

でビルドできます。しかし、ここで落とし穴があって、このビルド方法の場合、そのディレクトリ内のみにしかアクセスできません。

たとえば以下のようなディレクトリ構成の場合、distディレクトリからビルドするとscriptディレクトリにはアクセスできません。

project/
    Dockerfile
    dist/
        Dockerfile
    test/
        Dockerfile
    script/
        foo

この問題を解決するには、以下のようにdist/Dockerfileを書き

FROM ubuntu:14.04

COPY script/foo /script/foo

プロジェクトのルートで以下のようにコマンドすることで正常にビルドされます。

docker build -t service-dist -f dist/Dockerfile .

この問題を解決した方法は以下の2つの情報から考えることが出来ます。

  • Dockerfileがビルドされる時のカレントディレクトリはdocker build DIRで指定したDIRである。
  • Dockerfileは、-fオプションでどこからでも読み込むことができる

つまり、ビルドするときのカレントディレクトリは、Dockerfileのあるディレクトリではなく、buildコマンドで指定したDIRであると言うことです。したがって、Dockerfileには親ディレクトリから見たパスを書き、ビルド時に指定するDIRには、親ディレクトリを指定すれば問題が解決できます。

結論

Dockerfileがあるディレクトリから親ディレクトリを参照したい場合、Dockerfileには親ディレクトリから見たパスを書き、ビルド時に指定するDIRには、親ディレクトリを指定すれば正常にビルドすることができます。

参考

Specify Dockerfile (-f)

私たちのサービス

100万人の顧客一人ひとりと向き合えるAIマーケティング。

WordPressを、もっと快適に。もっと安全に。

採用の痛みからの解放。採用戦略から運用まで伴走します。

困ってることの正体、一緒に探します。

30分無料相談

オンライン

お気軽にオンラインでご相談ください。Webサイトやマーケティングのお悩みに対応します。

吉川 敦文

吉川 敦文

代表

高橋 文樹

高橋 文樹

CTO

ギブス

ギブス

Wizard 責任者

池田 秀貴

池田 秀貴

Webディレクター

お問い合わせ

ご質問やお見積もりのご依頼など、お気軽にお問い合わせください。