Как контейнеризировать sqlite3 и приложение Django в отдельных контейнерах для локальной разработки
Мой проект - это веб-приложение, которое использует две технологии wiz: Django + Sqlite3 + Neo4J. Я работаю над написанием файла docker-compose, чтобы я мог создать полный env всего одной командой. Мне не ясно, как я могу создать три отдельных контейнера, 1 для Djano, 1 для sqlite3, 1 для neo4j, чтобы приложения могли легко работать вместе. Здесь загвоздка в том, что когда Django приложение выполняет команду migrate, оно создает некий файл config.db в своей файловой системе, и он также должен быть общим с sqlite3 db. Так как же люди решают проблему sqlite3 и Django контейнера, где скелет таблицы создается Django перед запуском сервера и в то же время они хотят запустить sqlite3 в отдельном контейнере.
мой docker-compose.yml:
version: '3'
volumes:
local_neo4j_data: {}
local_sqllite_data: {}
networks:
ecosystem_network:
driver: bridge
services:
neo4j:
image: neo4j:latest #4.3.3-community latest
container_name: neo4j
ports:
- "7474:7474"
- "7687:7687"
networks:
- ecosystem_network
environment:
- NEO4J_AUTH=neo4j/eco_system
- NEO4J_dbms_memory_pagecache_size=512M
volumes:
- ${HOME}/neo4j/data:/data
- ${HOME}/neo4j/logs:/logs
- ${HOME}/neo4j/import:/var/lib/neo4j/import
- ${HOME}/neo4j/plugins:/plugins
sqllite3:
image: nouchka/sqlite3:latest
container_name: sqllite3
stdin_open: true
tty: true
volumes:
- local_sqllite_data:./root/db
networks:
- ecosystem_network
myapp_python:
container_name: myapp_python
build:
context: .
dockerfile: compose/Dockerfile
volumes:
- local_sqllite_data:./myapp_dashboard/config.db
env_file:
- ./myapp_dashboard/.env
networks:
- myapp_network
links:
- neo4j
depends_on:
- sqllite3
Dockerfile:
FROM python:3.7-alpine
RUN apk update && apk upgrade
#RUN apk update && \
# apk add --no-cache --virtual build-deps gcc musl-dev
#RUN apk add --no-cache --update sqlite=3.35.5-r
ENV PYTHONUNBUFFERED 1
RUN pip install -r requirements.txt
RUN mkdir /app
COPY ./ /app
WORKDIR /app
RUN cd ecosystem_dashboard && source .env \
&& cd .. \
&& python manage.py migrate \
&& python manage.py createsuperuser \
&& python deploy.py
CMD python manage.py runserver 0.0.0.0:8001