katsumasa0514
@katsumasa0514 (ASAP k)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

既存のdjangoファイルのDocker化

すでに作りかけのファイルがある状態でdocker化をすることになり、
シンプルなDocker+Django開発環境構築このURLを元に進めてきました。
Dockerfileの作成時にcopyで既存のディレクトリを追加したのですが、

% docker exec django_s_test python manage.py runserver 0.0.0.0:8000

をした際にエラーが出てしまいます。

エラー
python: can't open file '/code/manage.py': [Errno 2] No such file or directory
Dockerfile
FROM python:3

ENV PYTHONUNBUFFERED 1

RUN mkdir /code

WORKDIR /code

COPY requirements.txt /code/

RUN pip install -r requirements.txt

COPY . /code/

COPY container /code/ #既存のディレクトリ

スクリーンショット 2020-12-16 11.12.15.png

既存のアプリをdocker化するためには全てのファイルとフォルダをcopyで追加する必要があるのでしょうか?

0

1Answer

違っていたらごめんなさい。
manage.pyはjango_appの中にあります?

docker exec django_s_test python ./jango_app/manage.py runserver 0.0.0.0:8000

で実行できませんか?

COPYが思ったようにできていないケースも想定できますので、
execで乗り込んでみると状況がわかりやすいかもです。

プロジェクトのファイルについてですが、構成にもよるかと思いませんが、
コンテナで完結させたい場合は、必要最低限のプロジェクトを転送する形で、
コンテナで実行環境のみを整えるのであればvolumeをマウントする形がいいのかなと思います。

0Like

Comments

  1. @katsumasa0514

    Questioner

    ご回答ありがとうございます。
    manage.pyはdjango_appにあります。
    上記のコードを試しましたがうまくいきませんでした。
    execで乗り込んでみたところ、ファイルはcopyされているのかもしれません。

    ```ruby:
    (my_app_Movieist) (base) nawakatsushou@nawakatsushounoMacBook-Air django_app % docker exec 5a62ca869e2c ls -l /codetotal 12
    -rw-r--r-- 1 root root 179 Dec 14 03:22 Pipfile
    -rw-r--r-- 1 root root 3698 Dec 14 03:23 Pipfile.lock
    drwxr-xr-x 6 501 dialout 192 Dec 18 04:01 container
    drwxr-xr-x 7 root root 224 Dec 18 03:02 django_app
    -rwxr-xr-x 1 501 dialout 666 Dec 6 00:55 manage.py
    ```

    しかし、同じエラーが出てしまうので、仰られた通りvolumeでファイルをマウントしようかと思います。
    dockerfileから作り直しディレクトリ(container)をマウントしたいと思っているのですが、ディレクトリ(container)の直下のディレクトリとファイルはvolumeでマウントする必要はないのでしょうか?

    長くなってしまい申し訳ありません。
    よろしくお願いします。

  2. 解決できませんでしたか。すみません。

    ```
    # docker exec -it django_app bash
    ```

    でコンテナ内部へ入り込み、djangoのプログラムを起動できますか?
    原因を探ってみてください。

    また、マウントについてですが、manage.py同階層以下のファイルは必要になります。

    djangoのhelloworldで同じようなプロジェクト作ってみたので参考にしてください。
    [github](https://github.com/mailei/jdango-helloworld-in-docker/tree/master)


  3. @katsumasa0514

    Questioner

    回答ありがとうございます!
    別件で返信が遅れてしまい申し訳ありませんでした。
    参考にさせていただきます。

Your answer might help someone💌