簡體   English   中英

帶有docker-compose的Django應用程序將數據保存在媒體卷中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM