【docker-compose】Djangoコンテナ上で管理ユーザーを作成する方法


Dockerコンテナで「docker-compose」で構築したDjangoは、通常のコマンドでは反映されません。
コンテナ上のマシンへの設定コマンドを実施する際は、頭に「docker-compose run」を付けて実施します。


「docker-compose」で構築したDjangoで管理ユーザーを作成する方法

docker-composeを利用して作成したDjangoコンテナには、サービス名として「web」という名前を使用しています。

web:
    restart: always
    build: .
    command: bash -c "python manage.py runserver 0.0.0.0:8000 && python manage.py migrate"
    volumes:
            - .:/code
    ports:
            - 8000:8000
    depends_on:
            - db
    container_name: django

設計の詳細は以下のページを確認してください。

【docker-compose】Django+PostgreSQL+Nginxを連携した構築手順(CentOS8+VPS環境)

Dockerコンテナのマシンでコマンドを実行する際は「docker-compose run」を実施する

Dockerコンテナ上のマシン、今回はDjango関連のコマンドを実行してもコンテナ上のDjangoには反映されません。

コンテナで動いているDjangoでコマンドを実行するには、コマンドの頭に「docker-compose run」を付けます。

以下では、構築後、データベースとの同期をとるために「mirate」コマンドを打つ例となります。
通常は「python manage.py migrate」とコマンドをたたきますが、コンテナ上のDjangoでは以下のコマンドを実行し、設定を反映します。

$ docker-compose run web python manage.py migrate
Starting postgres ... done
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

Django上で管理ユーザーを作成する際は、事前に「migrate」コマンドを実施し、同期させましょう。

Dockerコンテナの「Django」で管理ユーザー作成

Dockerコンテナ上でDjangoの管理ユーザー作成は以下のコマンドとなります。

$ docker-compose run web python manage.py createsuperuser
Starting postgres ... done
Username (leave blank to use 'root'): 
Email address:
Password:
Password (again):
Superuser created successfully.
$

上記で管理ユーザー作成が成功すると管理ページへアクセスし、作成したユーザーでアクセスできることを確認します。

http://IPアドレス/admin

Docker上でのDjangoの設定例は以上となります。

Docker実践ガイド 第2版 impress top gearシリーズ

Docker実践ガイド 第2版 impress top gearシリーズ

古賀 政純
3,762円(07/10 14:55時点)
発売日: 2019/02/18
Amazonの情報を掲載しています


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!