実現したいこと
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の前後にスペースを入れないなど、いろいろ試しました。
補足
特になし
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。