У меня есть проект Django. Я создал базу данных PostgreSQL и наполнил ее данными. Как мне нужно смонтировать эту базу данных внутри контейнера докера, но я получаю сообщение об ошибке после запроса ProgrammingError в /api/v1/movies/, отношение «content.film_work» не существует, что говорит о том, что база данных пуста. Когда я запускаю psql -U app -d Movies_database в терминале, я получаю базу данных со всеми данными, но когда я запускаю docker exec -it sh, а затем psql -U app -d Movies_database Я понимаю, что Movies_database пуста. Похоже, я не могу создать объем существующей базы данных внутри контейнера докеров. В чем дело? Я использую PostgreSQL 16.3 (psql (PostgreSQL) 16.3).
docker-compose.yml
version: '3.8'
services:
django:
build:
context: .
volumes:
- "./movies_admin:/movies_admin"
env_file:
- "movies_admin/config/.env"
depends_on:
- database
- elasticsearch
database:
image: postgres:16
environment:
- POSTGRES_DB=movies_database
- POSTGRES_USER=app
- POSTGRES_PASSWORD=123qwe
volumes:
- ./data:/var/lib/postgresql/data
nginx:
image: nginx:latest
container_name: nginx
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/default.conf:/etc/nginx/conf.d/default.conf"
- "./movies_admin/movies_admin/staticfiles/admin:/etc/nginx/movies_admin/movies_admin/staticfiles/admin"
- "./movies_admin/movies_admin/staticfiles/rest_framework:/etc/nginx/movies_admin/movies_admin/staticfiles/rest_framework"
ports:
- "80:80"
depends_on:
- django
elasticsearch:
image: elasticsearch:8.13.0
container_name: elasticsearch
environment:
- "ES_JAVA_OPTS=-Xms200m -Xmx200m"
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- 9200:9200
Dockerfile
FROM python:3.10.0-alpine
RUN apk add postgresql-client build-base postgresql-dev linux-headers pcre-dev
WORKDIR /movies_admin
COPY requirements.txt .
RUN pip install -r requirements.txt --no-cache-dir
EXPOSE 8000
COPY movies_admin .
RUN python3 manage.py collectstatic --no-input
CMD [ "uwsgi", "--ini", "/movies_admin/uwsgi.ini" ]
comComponents/database.py
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': '123qwe',
'HOST': os.environ.get('DB_HOST', 'database'),
'PORT': os.environ.get('DB_PORT', 5432),
'OPTIONS': {
'options': '-c search_path=public,content'
}
}
}
docker-compose.yml
version: '3.8'
services:
django:
build:
context: .
volumes:
- "./movies_admin:/movies_admin"
env_file:
- "movies_admin/config/.env"
depends_on:
- database
- elasticsearch
database:
image: postgres:16
environment:
- POSTGRES_DB=movies_database
- POSTGRES_USER=app
- POSTGRES_PASSWORD=123qwe
volumes:
- ./data:/var/lib/postgresql/data
nginx:
image: nginx:latest
container_name: nginx
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/default.conf:/etc/nginx/conf.d/default.conf"
- "./movies_admin/movies_admin/staticfiles/admin:/etc/nginx/movies_admin/movies_admin/staticfiles/admin"
- "./movies_admin/movies_admin/staticfiles/rest_framework:/etc/nginx/movies_admin/movies_admin/staticfiles/rest_framework"
ports:
- "80:80"
depends_on:
- django
elasticsearch:
image: elasticsearch:8.13.0
container_name: elasticsearch
environment:
- "ES_JAVA_OPTS=-Xms200m -Xmx200m"
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- 9200:9200
Dockerfile
FROM python:3.10.0-alpine
RUN apk add postgresql-client build-base postgresql-dev linux-headers pcre-dev
WORKDIR /movies_admin
COPY requirements.txt .
RUN pip install -r requirements.txt --no-cache-dir
EXPOSE 8000
COPY movies_admin .
RUN python3 manage.py collectstatic --no-input
CMD [ "uwsgi", "--ini", "/movies_admin/uwsgi.ini" ]
comComponents/database.py
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': '123qwe',
'HOST': os.environ.get('DB_HOST', 'database'),
'PORT': os.environ.get('DB_PORT', 5432),
'OPTIONS': {
'options': '-c search_path=public,content'
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... -container
Как увеличить объем существующей базы данных в контейнере докеров? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Добавление xdebug в мой файл докеров php apache приводит к сбою контейнера докеров
Anonymous » » в форуме Php - 0 Ответы
- 130 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему нельзя увеличить объем «– RAM виртуального устройства Android –»?
Anonymous » » в форуме Android - 0 Ответы
- 37 Просмотры
-
Последнее сообщение Anonymous
-