UserWarning на Django-приложении Kubernetes в DigitalOcean
Развертывание приложения Django на кластере K8s в Digital Ocean с помощью рабочего процесса GitHub Actions и этой части
run: |
export SINGLE_POD_NAME=$(kubectl get pod -l app=django-doapp-web-deployment -o jsonpath="{.items[0].metadata.name}" | tr -d '\r')
kubectl exec -it $SINGLE_POD_NAME -- bash /app/migrate.sh
kubectl exec -it $SINGLE_POD_NAME -- bash /app/collectstatic.sh
Хотя он строит большую часть времени, он всегда дает следующее
Невозможно использовать TTY - вход не является терминалом или файлом нужного типа /app/manage.py:21: UserWarning: Not reading /app/.env - it doesn't exist.
.dotenv.read_dotenv()
Поскольку все еще не ясно, решил проверить журналы pod с
kubectl logs -f [POD_NAME]
Там я вижу эту ошибку
[2022-10-20 04:49:36 +0000] [8] [INFO] Загрузка рабочего с pid: 8 /app/django_doapp/wsgi.py:19: UserWarning: Не читается .env - он не существует. dotenv.read_dotenv(str(ENV_FILE_PATH))
.
Похоже, это указывает на проблему в файле wsgi.py
. Мой выглядит следующим образом
import os
import pathlib
import dotenv
from django.core.wsgi import get_wsgi_application
CURRENT_DIR = pathlib.Path(__file__).resolve().parent
BASE_DIR = CURRENT_DIR.parent
ENV_FILE_PATH = BASE_DIR / ".env"
dotenv.read_dotenv(str(ENV_FILE_PATH)) # This is line 19
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_rentals.settings')
application = get_wsgi_application()
Каковы последствия этого и как их решить?
Как это может быть актуально, структура проекта похожа на эту.
Кроме того, .gitignore
и .dockerignore
начинаются с
.env.prod
.env
.DS_Store
.kube/