带有docker-compose的Django应用将数据保留在媒体卷中

Dra*_*gos 6 django docker docker-compose cookiecutter-django

我正在将Django cookiecutter与docker和docker-compose一起使用。

在生产中,我使用dj-static来提供媒体文件。

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

如何用“媒体”量来做到这一点?

Dra*_*gos 6

我已经成功地完成了这项工作。

在 docker-compose.yml 中我添加了:

volumes:
  media: {}

django:
  ....
  volumes:
    - media:/app/project-name/same-path-as-MEDIA_URL
Run Code Online (Sandbox Code Playgroud)

在 compose/django Dockerfile 中我添加了:

VOLUME /app/PROJECT_NAME/same-path-as-MEDIA_URL
Run Code Online (Sandbox Code Playgroud)

进行此更改后,我运行了 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
Run Code Online (Sandbox Code Playgroud)