Как сохранить данные после перехода на deocker для развертывания (Wagtail в существующем проекте Django)
позвольте мне прояснить, что происходит....... Я работаю над проектом Wagtail, который появился благодаря следующим шагам: -Как добавить Wagtail в существующий проект Django(https://docs.wagtail.org/en/stable/advanced_topics/add_to_django_project.html)
и я пытаюсь переключить проект на docker для развертывания и не забудьте "import sql dump into postgres", и я пытаюсь запустить на uwsgi и все идеально без ошибок, но есть проблема после всего я не могу видеть ничего на страницах и когда я пытаюсь получить доступ к админке нет никаких существующих страниц (что означает, что я должен создать страницы с нуля)
Вот некоторые команды, которые я использовал: -docker-compose -f docker-compose-deploy.yml build -docker-compose -f docker-compose-deploy.yml up -docker-compose -f docker-compose-deploy.yml run --rm app sh -c "python manage.py createsuperuser"
если это необходимо, вот Dockerfile:
FROM python:3.9-slim-bookworm
LABEL maintainer="londonappdeveloper.com"
ENV PYTHONUNBUFFERED=1
# Install dependencies
RUN apt-get update && apt-get install --no-install-recommends -y \
build-essential \
libpq-dev \
gcc \
exiftool \
imagemagick \
libmagickwand-dev \
libmagic1 \
redis-tools \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*
# Set up virtual environment
RUN python -m venv /py && \
/py/bin/pip install --upgrade pip
# Copy application files
COPY ./requirements.txt /requirements.txt
COPY . /app
COPY ./scripts /scripts
WORKDIR /app
EXPOSE 8000
# Install Python dependencies
RUN /py/bin/pip install -r /requirements.txt
# Set up directories for static and media files
RUN adduser --disabled-password --no-create-home app && \
mkdir -p /vol/web/static && \
mkdir -p /vol/web/media && \
chown -R app:app /vol && \
chmod -R 755 /vol && \
chmod -R +x /scripts
ENV PATH="/scripts:/py/bin:$PATH"
USER app
CMD ["run.sh"]
docker-compose-deploy.yml:
version: '3.9'
services:
app:
build:
context: .
restart: always
volumes:
- static-data:/vol/web
environment:
- DB_HOST=db
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASS=${DB_PASS}
- SECRET_KEY=${SECRET_KEY}
- ALLOWED_HOSTS=${ALLOWED_HOSTS}
- REDIS_URL=${REDIS_URL}
depends_on:
- db
- redis
links:
- db:db
- redis:redis
db:
image: postgres:13-alpine
restart: always
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASS}
proxy:
build:
context: ./proxy
restart: always
depends_on:
- app
ports:
- 80:8000
volumes:
- static-data:/vol/static
redis:
image: redis:alpine
volumes:
postgres-data:
static-data:
я пытаюсь увидеть проект работающим как b4 применить docker но теперь он пуст ничего не показывает и также на странице администратора нет никаких страниц она пуста.
Ответ на основе вчерашнего комментария о конфликтах импорта при импорте в базу данных с существующими миграциями:
Вариант 1: подключитесь к базе данных postgres, удалите базу данных $DB_NAME, создайте ее заново, а затем импортируйте, не запуская миграции. Ссылка
Вариант 2: Настройте контейнер PG на импорт дампа данных при инициализации. Чтобы сделать это, вам придется сначала уничтожить том данных, который у вас есть для PG, поскольку это происходит только при первом запуске базы данных. Подробности см. в разделе "Скрипты инициализации" в официальной документации по образу.