はじめに
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もっと詳しくなりたいです。