[英]Django app with docker-compose keep the data in media volume
我正在使用帶有docker和docker-compose的Django cookiecutter。
在制作時我正在使用dj-static來提供我的媒體文件。
每當我使用'docker-compose down'命令時,我的媒體卷中的所有內容都會被刪除。 我認為這是該命令的預期結果,但保留了'postgreSQL'中的所有內容。
我怎么能用“媒體”卷呢?
我已成功完成這項工作。
在docker-compose.yml中我添加了:
volumes:
media: {}
django:
....
volumes:
- media:/app/project-name/same-path-as-MEDIA_URL
在compose / django Dockerfile中,我添加了:
VOLUME /app/PROJECT_NAME/same-path-as-MEDIA_URL
在這個改變之后我運行了docker-compose build,docker-compose up並得到了500錯誤。 傳遞此信息(如果您尚未修改django cookiecutter的默認設置):
docker ps - here you'll get your django container id
docker exec -u root THE_CONTAINER_ID chown django:user PROJECT_NAME/same-path-as-MEDIA_URL
您應該包含其他卷以保留mediafiles文件夾:
- /path/to/store/on/host:/path/to/mediafiles
在這里留下撰寫文件。 我堅持數據庫,媒體和彈性搜索數據。 對於那些很難確定將當前答案放在何處的人來說,這應該是有用的。
version: '3.3'
services:
# elastic search service
elasticsearch:
image: elasticsearch:6.5.4
ports:
- '9400:9200'
volumes:
- elastic-data:/usr/share/elasticsearch/data
# Postgres database service
postgres:
image: postgres:9.6-alpine
environment:
POSTGRES_DB: dilirena
POSTGRES_USER: dilirenauser
POSTGRES_PASSWORD: pa55w0rd
ports:
- '5435:5432'
volumes:
- postgres-data:/var/lib/postgresql/data
# drf restful api service
api:
build: .
command: python manage.py runserver 0.0.0.0:8081
volumes:
- .:/app
- media:<media-path>
ports:
- '8081:8081'
env_file:
- ./.env
links:
- postgres
- elasticsearch
depends_on:
- postgres
- elasticsearch
volumes:
elastic-data:
postgres-data:
media:
我在Mac上,不確定它是否有所作為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.