当前位置: 首页 > 知识库问答 >
问题:

带有docker compose的Django应用程序将数据保存在媒体卷中

柯曜文
2023-03-14

我正在使用Django cookiecutter与docker和docker compose。

在制作中,我使用dj static为我的媒体文件提供服务。

每当我使用“docker-compose down”命令时,我的媒体卷中的所有内容都会被删除。我认为这是该命令的预期结果,但“postgreSQL”中的所有内容都被保留。

我怎样才能用“媒体”卷做到这一点?

共有3个答案

欧浩淼
2023-03-14

在此处保留撰写文件。我坚持数据库,媒体和弹性搜索数据。对于那些很难找到当前答案的人来说,这应该很有用。

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电脑上,不确定这是否有什么不同。

唐阳晖
2023-03-14

您应该包括其他卷以保留mediafiles文件夹:

- /path/to/store/on/host:/path/to/mediafiles
袁运良
2023-03-14

我成功地做到了这一点。

在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
 类似资料:
  • 我最近编写了一个Android应用程序。这只是一个简单的应用程序,让你保持几个简单的计数器间隔的篮球比赛得分。我得到了增加一个保存功能的需求,这样你就可以保存你的分数,然后加载他们回来。目前,当您停止应用程序时,您的数据将丢失。所以我想知道的是我必须添加什么才能让应用程序保存标签(分数),然后加载它。谢谢,伙计们,对不起,我对这些东西不太了解。

  • 我正在用Pymongo构建一个烧瓶应用程序。在我的python脚本中,数据应该用。save()保存,也可以用。find()检索,如果我重新启动应用程序,它也会保持不变。然而,如果我从另一个终端或在停止应用程序后从同一终端检查mongo数据库,数据就不在那里了。为了确保正确使用pymongo,我从w3schools.com复制并粘贴了下面的基本脚本: 输出为: 正如你所料。这是在运行上述脚本之前显示

  • 我刚刚开始android开发,对于如何将媒体文件保存到外部存储的自定义文件夹非常困惑。我读过关于内窥镜存储,纵隔,但我还是不明白。 我正在尝试将文件保存到外部存储中自己的文件夹中(就像外部存储中的Whatsapp文件夹一样)。我希望结构是这样的: 我不希望媒体文件存储在默认媒体目录(如Pictures/或DCIM/)中。我有些问题: 要用哪一个?作用域存储或纵隔API? 如何实现上述操作? 其他信

  • 问题内容: 我目前正在使用Swift开发的iOS应用程序,需要在设备上存储一些用户创建的内容,但似乎找不到一种简单快捷的方法来在设备上存储/接收用户内容。 有人可以解释如何存储和访问本地存储吗? 想法是在用户执行操作时存储数据,并在应用程序启动时接收数据。 问题答案: 如果仅存储两个字符串,最简单的解决方案是,在Swift 3中,该类已重命名为just 。 最好将密钥存储在全局位置,以便您可以在代

  • 我正试图让掌舵键斗篷图表与Postgres数据库工作。我希望我的数据在卸载期间保持不变。我已经创建了/mnt/disks/vol1/PostgreSQL挂载。当我运行以下命令时:helm install keycloak-f keycloak.yaml codecentric/keycloak 索赔: 储存

  • Weblogic是否有任何免费可用的应用程序(war文件),其中应用程序使用某种数据库? 如果这不是正确的地方,请将我重定向到正确的地方问这个问题。