django - "docker-compose run"命令后卷更改不持久(Django 的collectstatic)

标签 django docker docker-compose

我有一个使用 Docker Compose 创建的 Django 环境,并且我尝试使用 manage.pycollectstatic 将站点的静态文件复制到容器中的目录。该目录(/usr/src/app/static)也是一个 Docker Volume。

构建我的 docker 容器(docker-compose build)后,我运行 docker-compose run web python manage.pycollectstatic,它按预期工作,但是我的 web服务器(Nginx)找不到文件,当我运行 docker-compose run web ls -la/usr/src/app/static 时也没有任何文件。

关于我做错了什么有什么想法吗?

(注意:我的 Dockerfile 中没有 manage.pycollectstatic 因为我的设置需要加载“.env”文件,而且我没有找到在Dockerfile。无论哪种情况,我都想知道为什么 Docker Compose 无法按照我的预期工作。)

这是我的配置文件:

## docker-compose.yml:
web:
  restart: always
  build: .
  expose:
    - "8000"
  links:
    - postgres:postgres
  volumes:
    - /usr/src/app/static
    - .:/code
  env_file: .env
  command: /usr/local/bin/gunicorn myapp.wsgi:application -w 2 -b :8000 --reload

nginx:
  restart: always
  build: ./config/nginx
  ports:
    - "80:80"
  volumes:
    - /www/static
  volumes_from:
    - web
  links:
    - web:web

postgres:
  restart: always
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  ports:
    - "5432:5432"


## Dockerfile:
FROM python:3.4.3
RUN mkdir /code
WORKDIR /code
ADD . /requirements/ /code/requirements/
RUN pip install -r /code/requirements/docker.txt
ADD . /code/

最佳答案

运行docker-compose run ...启动一个新容器并在其中执行命令。然后,当您运行 docker-compose up 时,它会创建另一个新容器...它没有与之前的命令相比发生的更改。

您想要做的是启动一个数据容器来保存静态文件。像这样将另一个容器添加到您的撰写文件中...

web-static:
  build: .
  volumes:
    - /usr/src/app/static
  env_file: .env
  command: manage.py collectstatic

并将 web-static 添加到 nginx 容器上的“volumes-from”列表

关于django - "docker-compose run"命令后卷更改不持久(Django 的collectstatic),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030360/

相关文章:

python - 使用 python 3.3 在 Django 1.9 中导入 WeakMethod 错误

Django - 从另一个项目导入模型

node.js - 使用 intellij 远程调试 nodejs

mongodb - 禁用 mongo docker 中的默认身份验证

docker - 如何对Docker进行逆向工程?

docker - docker-compose网络-主机名无法解析

Django 模型 : Multiplication of two fields

mysql - 有没有一种简单的捆绑方式来安装 Django、Python、Apache、MySQL/PostreSQL?

docker - docker save 时访问被拒绝

docker push 被拒绝 : Unable to determine the upload's size