Estoy aprendiendo Django al intentar crear la aplicación de encuestas descrita en el sitio web de Django . Al mismo tiempo, estoy usando Docker por primera vez y he encontrado problemas al tratar de hacer que la base de datos PostgreSQL, utilizada por esta aplicación, sea persistente.
Siguiendo los consejos sobre el uso de Docker con Django, que se encuentran en el sitio web de Docker , estoy ejecutando dos servicios con docker-compose: uno maneja la base de datos y el otro la aplicación en sí (al menos así es como yo lo entiendo). Intenté montar un volumen en el directorio /var/lib dentro del contenedor de la base de datos, donde encontré el directorio PostgreSQL. Aunque este directorio se volvió persistente, lo que verifiqué al crear algunos archivos ficticios, las migraciones realizadas a través del servicio web se borran cada vez que reinicio esos contenedores.
A continuación se encuentran mi archivo docker-copmpose.yml y settings.py de Django. ¿Qué debo hacer para que esta base de datos sea persistente?
#docker-compose.yml version: '3' services: db: image: postgres environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres volumes: - .:/code - .:/var/lib web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db #(...) # Database # https://docs.djangoproject.com/en/2.2/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': 'db', 'PORT': 5432, } } #(...)La persistencia de datos en la ventana acoplable puede ser complicada, pero aquí hay 2 posibles soluciones:
volumes: - /my/own/datadir:/var/lib/postgresql/dataEspero haber respondido a tu pregunta :)