В данный момент я пытаюсь создать приложение Django, которое другие пользователи могут использовать как Docker -Container. Я хочу, чтобы они легко выполняли команду запуска или запускали заранее записанный docker -compose файл для запуска контейнера.
Теперь у меня проблемы с сохранением данных. Я использую флаг тома в docker, например, для привязки, монтирования локальной папки хоста в контейнер, где данные приложения и файлы конфигурации находятся на контейнере. Папка хоста пуста при первом запуске, так как пользователь только что установил docker и только начинает docker -композицию.
Поскольку это монтируемое подключение, пустая папка переопределяет папку в Docker, насколько я понял, и поэтому папка-контейнер, содержащая Django -App, теперь пуста и поэтому не является дисководе.
Я немного искал и, насколько я понял, мне нужно создать точку входа. sh Файл, который копирует папку данных приложения в папку контейнера после запуска, где находится том.
Теперь к моим вопросам:
- Есть ли передовой опыт копирования файлов через точку входа. sh file?
- Как насчет второго запуска, после того, как 1. работал и файлы уже существуют, как не переопределить возможно измененные файлы конфигурации с файлами по умолчанию в папке temp?
Мой пример код на данный момент:
Dockerfile
# pull official base image
FROM python:3.6
# set work directory
RUN mkdir /app
WORKDIR /app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# copy project
COPY . /app/
# install dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
#one of my tries to make data persistent
VOLUME /app
docker -compose.yml
version: '3.5'
services:
app:
image: app:latest
ports:
- '8000:8000'
command: python manage.py runserver 0.0.0.0:8000
deploy:
replicas: 1
restart_policy:
condition: on-failure
volumes:
- /folder/to/app/data:/app
networks:
- overlay-core
networks:
overlay-core:
external: true
точка входа. sh
#empty for now