0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerfileでCOPYのファイルパスが正しいのに動かないのはおかしい!

Posted at

はじめに

Dockerは環境を何度作っても毎度詰まります。
今回もKaggleをするための環境を作っていたのですが、案の定詰まりました。

今回はこちらの記事を参考にKaggleの環境を作成していました。

そこにjupyter notebookの設定ファイルである、jupyter_notebook_config.pyを作成し、コンテナにコピーしようとしたのですが、なかなかできず。調べても解決方法が見つからなかったため、まとめます。

私のミスによるのが原因ですが、同じ症状に悩まされる人がいたら参考になるかと思います。

問題

Dockerを記事通りにまず作成を行い、
jupyter_notebook_config.pyを作成しました。

ディレクトリはこのようになっています。

┣ libraries
  ┣ setting
    ┣ jupyter_notebook_config.py
┣ notebook
┣ docker-compose.yml
┣ Dockerfile
┣ .dockerignore

そしてDockerfileの最後にjupyter_notebook_config.pyをコピーする文章を追加しました。

COPY ./libraries/setting/jupyter_notebook_config.py .jupyter/

すると以下のエラーが発生して、コピーができませんでした。

 > [3/3] COPY /notebook/jupyter_notebook_config.py /tmp/jupyter_notebook_config.py:
------
failed to compute cache key: "/notebook/jupyter_notebook_config.py" not found: not found
ERROR: Service 'jupyter' failed to build : Build failed

ファイルが存在しないとなります。しかしパスはあっているはずです。

jupyter_notebook_config.pyをDockerfileと同じ階層に移動して、以下を実行するとうまく動きます。

COPY ./jupyter_notebook_config.py .jupyter/

なぜか、./notebook/settingだとnot foundになりました。

解決方法

問題は.dockerignoreにありました。

.dockerignore

notebook

notebookをビルドのタイミングで無視する設定にしていました。

.dockerignoreを削除したところ無事動きました。

おわりに

.dockerignoreを使ったことがなく、初めて導入しましたがまさかそれが原因になるとは思ってもいませんでした。

いままで扱ったことがないため、ここが原因になるということが完全に視野から外れていたため、いろいろパスを変えたり、ファイルの位置を変えたりしました。

検索しても引っかからない(当たり前)ので、同じことで悩む人が現れると思い、記事にしました。

Dockerもっと詳しくなりたいです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?