Docker上でDjangoのコンテナを作成した際、管理画面(admin)へアクセスできない場合があります。
DockerコンテナでDjangoの構築でインストール成功画面は表示できたけど、管理画面にアクセスできない場合はこのページを参考にしてください。
今回の環境はCentOS8で実施しています。
$ cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)
Djangoの管理画面へのアクセスエラーが発生した場合に簡単にできる対応方法
httplocalhost:8000/admin
上記にアクセスし、Djangoの管理画面でアクセスエラーが発生する場合、「manage.py」のファイルがあるフォルダで、以下のコマンドを実施することで解消できます。
python3 manage.py migrate
or
python3 manage.py migrate
しかし、まれに以下のように、エラーが発生する場合があります。
$ python3 manage.py migrate Traceback (most recent call last): File "manage.py", line 10, in main from django.core.management import execute_from_command_line ModuleNotFoundError: No module named 'django' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "manage.py", line 21, in <module> main() File "manage.py", line 16, in main ) from exc ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
この、エラーについて簡単に対応できる方法があるので以下でメモをしておきます。
エラーの対応方法は一時的にOS上でDjangoを「pip install」し再度「migrate」すること
結論から言うと、OS上でDjangoをインストールし、「migrate」コマンドを実行すると解消されます。
まずは、OS上でDjangoがインストールされているか確認します。
$ pip show django WARNING: Package(s) not found: django
djangoがインストールされていないことで、うまく「migrate」コマンドが実行できなかったのが原因です。
なので以下で、Djangoをインストールします。
$ pip install django Collecting django Downloading Django-3.0.5-py3-none-any.whl (7.5 MB) |████████████████████████████████| 7.5 MB 12.0 MB/s Requirement already satisfied: pytz in /usr/lib/python3.6/site-packages (from django) (2017.2) Requirement already satisfied: sqlparse>=0.2.2 in /usr/local/lib/python3.6/site-packages (from django) (0.3.1) Requirement already satisfied: asgiref~=3.2 in /usr/local/lib/python3.6/site-packages (from django) (3.2.4) Installing collected packages: django Successfully installed django-3.0.5 $
以下でDjangoがインストールされたことを確認します。
$ pip show django Name: Django Version: 3.0.5 Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design. Home-page: https://www.djangoproject.com/ Author: Django Software Foundation Author-email: foundation@djangoproject.com License: BSD Location: /usr/local/lib/python3.6/site-packages Requires: sqlparse, pytz, asgiref Required-by:
DjangoをOS上にインストールし再度「migrate」を実行
上記で、OS上に「Django」をインストール後、再度以下コマンドを実行します。
$ python3 manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK $
上記でうまくいけば、管理画面へアクセスできます。
「docker-compose.yml」へ「migrate」コマンドを記述しておく
Docker-composeを利用する方は以下のように、commandで「migrate」コマンドを事前に記述しておくと便利です。
$ cat docker-compose.yml version: '3' services: db: image: postgres ports: - "5432:5432" environment: POSTGRES_PASSWORD: postgres web: build: . command: python3 manage.py migrate command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db $
以上がDocker上のDjangoコンテナへのアクセス画面へのエラーについてのまとめでした。
同じような事象が発生した場合は参考にしてください。
Dockerを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す