【发布时间】:2017-09-18 11:09:16
【问题描述】:
如何确保在部署期间创建的最新静态文件
一个 Django 应用程序被复制到一个卷中?我的web 容器定义了一个 Django 应用程序,该应用程序在构建时运行python manage.py collectstatic --noinput --clear。这会将所有静态文件移动到/usr/src/app/static_files 目录中。我希望这些静态文件在staticdata 卷中可用,以便 nginx 可以为它们提供服务。换句话说,/usr/src/app/static_files 的内容应该覆盖staticdata 卷中现有文件的内容。否则 nginx 将继续提供文件的旧副本,例如 css 文件和图像,而不是 Django 收集的更新文件。
这可能吗?感觉就像我为此目的使用错误的卷,因为它们的目的是持久化数据。
Edit1:有没有办法在应用程序部署时创建一个“临时卷”,在取消部署应用程序时将其销毁?如果是这样,我该怎么做,如何让这个卷也可用于 nginx?
Edit2:如果我没记错的话,一个选项是使用绑定挂载,但我已经读过,如果可能的话,应该避免这些,这样应用程序就不会依赖于主机的文件系统。
version: '3.3'
services:
web:
restart: always
build: ./web
env_file:
- web-variables.env
expose:
- "8000"
ports:
- "8000:8000"
volumes:
- staticdata:/usr/src/app/static_files
- staticdata:/usr/src/app/uploaded_files
command: "./django-entrypoint.sh"
depends_on:
- database
nginx:
restart: always
build: ./nginx
ports:
- "80:80"
- "443:443"
volumes:
- staticdata:/data/www
depends_on:
- web
database:
image: postgres:9.2
restart: always
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
staticdata:
pgdata:
【问题讨论】:
标签: django docker docker-compose