У меня много проблем с настройкой приложения My Dockerized Django + PostgreSQL DB для работы в кластере Kubernetes, которое я создал с помощью облачной платформы Google.
Как мне указать DATABASES.default.HOST из моегоФайл settings.py при развертывании образа PostgreSQL из Docker Hub и образа моего веб-приложения Django в кластер Kubernetes?
Вот как я хочу, чтобы мое приложение работало.Когда я запускаю приложение локально, я хочу использовать базу данных SQLITE, для этого я внес следующие изменения в мой файл settings.py:
if(os.getenv('DB')==None):
print('Development - Using "SQLITE3" Database')
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR,'db.sqlite3'),
}
}
else:
print('Production - Using "POSTGRESQL" Database')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'agent_technologies_db',
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': , #???
'PORT': , #???
}
}
Основная идея заключается в том, что при развертывании приложения вKubernetes Cluster, внутри объекта Kubernetes Pod, будет запущен контейнер Docker (мое приложение Dockerized Django).При создании контейнера я также создаю переменную среды DB
и устанавливаю для нее значение True.Поэтому при развертывании приложения я использую базу данных PostgreSQL.
ПРИМЕЧАНИЕ : Если у кого-то есть какие-либо другие предложения о том, как мне отделить локальную разработку от разработки, пожалуйста, оставьте комментарий.
Вот как выглядит мой Dockerfile:
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /agent-technologies
WORKDIR /agent-technologies
COPY . /agent-technologies
RUN pip install -r requirements.txt
EXPOSE 8000
А вот так выглядит мой файл docker-compose:
version: '3'
services:
web:
build: .
command: python src/manage.py runserver --settings=agents.config.settings
volumes:
- .:/agent-technologies
ports:
- "8000:8000"
environment:
- DB=true
При локальном запуске приложения оно работаетпрекрасно.Но когда я пытаюсь развернуть его в кластере Kubernetes, объекты Pod, на которых выполняются контейнеры моего приложения, терпят крах в бесконечном цикле, потому что я не знаю, как указать DATABASES.default.HOST при запуске приложения в производственной среде.И, конечно, команда, указанная в файле docker-compose (command: python src/manage.py runserver --settings=agents.config.settings
), вероятно, создает исключение и приводит к аварийному завершению работы модулей в бесконечном цикле.
ПРИМЕЧАНИЕ. Я уже создал все необходимые файлы конфигурации для Kubernetes (определения развертывания)/ Услуги / Секрет / Объемные файлы).Вот моя ссылка на github: https://github.com/StefanCepa/agent-technologies-bachelor
Любая помощь будет оценена!Спасибо всем заранее!