質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

125閲覧

Djangoをdockerで動かしたい

Ucchii

総合スコア1

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2024/07/19 13:02

編集2024/07/19 13:48

実現したいこと

Djangoをdockerで動かしたい
https://appliku.com/post/django-docker-tutorial-postgres/
こちらのwebサイトを参考に進めました

発生している問題・分からないこと

migrateまで終わりいよいよ立ち上げようとしましたが.envのkeyを読み込めていない模様

エラーメッセージ

error

1python3 manage.py runserver 0.0.0.0:8000 2 3 raise ImproperlyConfigured(error_msg) from exc 4django.core.exceptions.ImproperlyConfigured: Set the DJANGO_SECRET_KEY environment variable

該当のソースコード

settings.py

1""" 2Django settings for mysite project. 3 4Generated by 'django-admin startproject' using Django 4.2.11. 5 6For more information on this file, see 7https://docs.djangoproject.com/en/4.2/topics/settings/ 8 9For the full list of settings and their values, see 10https://docs.djangoproject.com/en/4.2/ref/settings/ 11""" 12 13from pathlib import Path 14import os 15 16# Build paths inside the project like this: BASE_DIR / 'subdir'. 17BASE_DIR = Path(__file__).resolve().parent.parent 18 19 20# Quick-start development settings - unsuitable for production 21# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ 22 23# SECURITY WARNING: keep the secret key used in production secret! 24SECRET_KEY = 'django-insecure-)8_gj9grz521-$154fdこんな感じでsampleです。' 25 26# SECURITY WARNING: don't run with debug turned on in production! 27DEBUG = True 28 29ALLOWED_HOSTS = ['*'] 30 31 32# Application definition 33 34INSTALLED_APPS = [ 35 'django.contrib.admin', 36 'django.contrib.auth', 37 'django.contrib.contenttypes', 38 'django.contrib.sessions', 39 'django.contrib.messages', 40 'django.contrib.staticfiles', 41 # bootstrapを登録 42 'django_bootstrap5', 43 # フォームをカスタマイズ 44 'widget_tweaks', 45 # アプリ 46 'app', 47 48] 49 50MIDDLEWARE = [ 51 'django.middleware.security.SecurityMiddleware', 52 'django.contrib.sessions.middleware.SessionMiddleware', 53 'django.middleware.common.CommonMiddleware', 54 'django.middleware.csrf.CsrfViewMiddleware', 55 'django.contrib.auth.middleware.AuthenticationMiddleware', 56 'django.contrib.messages.middleware.MessageMiddleware', 57 'django.middleware.clickjacking.XFrameOptionsMiddleware', 58] 59 60ROOT_URLCONF = 'mysite.urls' 61 62TEMPLATES = [ 63 { 64 'BACKEND': 'django.template.backends.django.DjangoTemplates', 65 'DIRS': [], 66 'APP_DIRS': True, 67 'OPTIONS': { 68 'context_processors': [ 69 'django.template.context_processors.debug', 70 'django.template.context_processors.request', 71 'django.contrib.auth.context_processors.auth', 72 'django.contrib.messages.context_processors.messages', 73 ], 74 }, 75 }, 76] 77 78WSGI_APPLICATION = 'mysite.wsgi.application' 79 80 81# Database 82# https://docs.djangoproject.com/en/4.2/ref/settings/#databases 83 84DATABASES = { 85 'default': { 86 'ENGINE': 'django.db.backends.sqlite3', 87 'NAME': BASE_DIR / 'db.sqlite3', 88 } 89} 90 91 92# Password validation 93# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators 94 95AUTH_PASSWORD_VALIDATORS = [ 96 { 97 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 98 }, 99 { 100 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 101 }, 102 { 103 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 104 }, 105 { 106 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 107 }, 108] 109 110 111# Internationalization 112# https://docs.djangoproject.com/en/4.2/topics/i18n/ 113 114LANGUAGE_CODE = 'ja' 115 116TIME_ZONE = 'Asia/Tokyo' 117 118USE_I18N = True 119 120USE_TZ = True 121 122 123# Static files (CSS, JavaScript, Images) 124# https://docs.djangoproject.com/en/4.2/howto/static-files/ 125 126STATIC_URL = 'static/' 127#STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) 128 129# Default primary key field type 130# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field 131 132DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' 133 134# アップロードされたメディアファイルが保存されるディレクトリのパスを指定,プロジェクトのベースディレクトリ(BASE_DIR)に 'media' というサブディレクトリを結合して、メディアファイルが保存されるパスを作成 135MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 136# 画像の保存先 137MEDIA_URL = '/media/' 138 139# 開発用 140#EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 141 142# 本番用 143# メールサーバーへの接続設定(GmailのSMTPサーバーを使用してメールを送信するための設定) 144DEFAULT_FORM_EMAIL="mamemamesn@gmail.com" 145EMAIL_HOST="smtp.gmail.com" 146EMAIL_PORT=587 147EMAIL_HOST_USER="mamemamesn@gmail.com" 148EMAIL_HOST_PASSWORD="xqukrnvkbmevrfnd" 149EMAIL_USE_TLS="True" 150 151import environ 152 153BASE_DIR = Path(__file__).resolve(strict=True).parent.parent 154env = environ.Env() 155DEBUG = env.bool("DJANGO_DEBUG", False) 156# Allowed Hosts Definition 157if DEBUG: 158 # If Debug is True, allow all. 159 ALLOWED_HOSTS = ['*'] 160else: 161 ALLOWED_HOSTS = env.list('DJANGO_ALLOWED_HOSTS', default=['example.com']) 162 163SECRET_KEY = env('DJANGO_SECRET_KEY') 164# Databases 165DATABASES = { 166 "default": env.db("DATABASE_URL") 167} 168DATABASES["default"]["ATOMIC_REQUESTS"] = True 169DATABASES["default"]["CONN_MAX_AGE"] = env.int("CONN_MAX_AGE", default=60) 170SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 171LOGGING = { 172 'version': 1, 173 'disable_existing_loggers': False, 174 'handlers': { 175 'console': { 176 'class': 'logging.StreamHandler' 177 }, 178 }, 179 'loggers': { 180 '': { # 'catch all' loggers by referencing it with the empty string 181 'handlers': ['console'], 182 'level': 'DEBUG', 183 }, 184 }, 185}

Dockerfile

1FROM python:3.11.2-bullseye 2ENV PIP_NO_CACHE_DIR off 3ENV PIP_DISABLE_PIP_VERSION_CHECK on 4ENV PYTHONUNBUFFERED 1 5ENV PYTHONDONTWRITEBYTECODE 1 6ENV COLUMNS 80 7RUN apt-get update \ 8 && apt-get install -y --force-yes \ 9 nano python3-pip gettext chrpath libssl-dev libxft-dev \ 10 libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev\ 11 && rm -rf /var/lib/apt/lists/* 12WORKDIR /code/ 13COPY requirements.txt /code/ 14RUN pip install -r requirements.txt 15COPY . /code/

docker

1services: 2 db: 3 image: postgres 4 environment: 5 - POSTGRES_USER=tutorial 6 - POSTGRES_PASSWORD=tutorial 7 - POSTGRES_DB=tutorial 8 ports: 9 - "127.0.0.1:5432:5432" 10 web: 11 build: . 12 restart: always 13 command: python manage.py runserver 0.0.0.0:8000 14 env_file: 15 - .env 16 ports: 17 - "127.0.0.1:8000:8000" 18 volumes: 19 - .:/code 20 links: 21 - db 22 depends_on: 23 - db 24
DJANGO_DEBUG=1 DATABASE_URL=postgres://tutorial:tutorial@db/tutorial DJANGO_SECRET_KEY='django-insecure-)8_gj9grz521-$154fd#こんな感じでsampleです。'

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

secretkeyの前後にスペースを入れないなど、いろいろ試しました。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

services:
db:
image: postgres
environment:
- POSTGRES_USER=tutorial
- POSTGRES_PASSWORD=tutorial
- POSTGRES_DB=tutorial
ports:
- "127.0.0.1:5432:5432"
web:
build: .
restart: always
command: python manage.py runserver 0.0.0.0:8000
env_file:
- .env
ports:
- "127.0.0.1:8000:8000"
volumes:
- .:/code
links:
- db
depends_on:
- db
こちらのyamlファイルに
command: python manage.py runserver 0.0.0.0:8000
と、記載があり、コンテナの立ち上げとともに起動する設定にしていたため、そもそもrunserverはできなかったということでした。(8000番の競合)
コピペしながらやるとこうなりますね💦

投稿2024/07/19 13:46

Ucchii

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問