Как написать файл docker-compose и dockerfie для Django connect Kong api
Я делаю дипломный проект, и собираюсь выложить свой проект на сервер, но у меня проблемы с файлами docker-compose и dockerfile, не могли бы вы подсказать мне, где я должен это исправить?
Я экспериментировал с написанием, но все равно есть проблемы в докер образе конга. Он падает, не всегда работает. Как мне это исправить? Можете ли вы предложить написать эти файлы для меня?
Спасибо.
dockerfile files
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]```
docker-compose files
```version: '3.9'
services:
kong-database:
image: postgres:latest
container_name: kong-database
restart: always
ports:
- 15432:5432
networks:
- default
volumes:
- db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=kong
- POSTGRES_USER=kong
- POSTGRES_PASSWORD=kong
kong:
image: kong:latest
container_name: kong
restart: always
ports:
- 18000:8000
- 18443:8443
- 127.0.0.1:8001:8001
- 18444:8444
links:
- kong-database:kong-database
networks:
- default
environment:
- LC_CTYPE=en_US.UTF-8
- LC_ALL=en_US.UTF-8
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
- KONG_PG_USER=kong
- KONG_PG_PASSWORD=kong
- KONG_CASSANDRA_CONTACT_POINTS=kong-database
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
- KONG_ADMIN_LISTEN=0.0.0.0:18001, 0.0.0.0:18444 ssl
konga:
image: pantsel/konga
container_name: kong-konga
restart: always
ports:
- 1337:1337
networks:
- default
volumes:
- data:/app/kongadata
links:
- kong:kong
environment:
- NODE_ENV=production
networks:
default:
driver: bridge
volumes:
db:
driver: local
data:
driver: local
setting.py
```DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'kong',
'USER': 'kong',
'PASSWORD': 'kong',
'HOST': '127.0.0.1',
'PORT': '15432',
}
}```
Подумайте, стоит ли запускать необходимый процесс миграции перед запуском pythong? Например.
CMD ["kong", "migrations bootstrap && python3 manage.py runserver 0.0.0.0:8000"]
База данных нуждается в загрузке или является более старой, чем Kong 1.0. Чтобы начать новую установку с нуля, выполните 'kong migrations bootstrap'. Чтобы мигрировать с версии старше 1.0, сначала мигрируйте на Kong 1.5.0. Если у вас все еще есть сущности 'apis', вы можете преобразовать их в маршруты и сервисы с помощью команды 'kong migrations migrate-apis' в Kong 1.5.0.
.
Ошибка возникает из-за того, что Kong не может использовать предоставленную базу данных. При создании kong необходимо выполнить дополнительный шаг migrations/bootstrap
для подготовки базы данных к использованию Kong.
Поскольку вы используете Docker Compose для поднятия всей среды, добавления дополнительного контейнера для выполнения миграции сначала должно быть достаточно:
kong-migrations:
container_name: kong-migrations
image: kong:latest
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
- KONG_PG_USER=kong
- KONG_PG_PASSWORD=kong
- KONG_PASSWORD=kong
networks:
- default
command: kong migrations bootstrap
depends_on:
- kong-database
Поскольку вы монтируете тома данных из/в базу данных Kong, первый запуск может не сработать, поскольку Kong может запуститься до завершения миграций. В этом случае просто дождитесь автоматического перезапуска Kong, и все должно получиться.