加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

django – 在部署时将静态文件复制到卷?

发布时间:2020-12-16 03:52:09 所属栏目:安全 来源:网络整理
导读:如何确保在部署期间创建的最新静态文件 一个Django应用程序被复制到卷?我的Web容器定义了一个Django应用程序,在构建时运行python manage.py collectstatic noinput clear.这会将所有静态文件移动到/usr/src / app / static_files目录中.我希望这些静态文件

如何确保在部署期间创建的最新静态文件
一个Django应用程序被复制到卷?我的Web容器定义了一个Django应用程序,在构建时运行python manage.py collectstatic –noinput –clear.这会将所有静态文件移动到/usr/src / app / static_files目录中.我希望这些静态文件在静态数据卷中可用,以便nginx可以为它们提供服务.换句话说,/usr/src / app / static_files的内容应该覆盖staticdata卷中现有文件的内容.否则,nginx将继续提供较旧的文件副本,如css文件和图像,而不是Django收集的更新文件.

这可能吗?感觉就像我为此目的使用了错误的卷,因为它们的目的是持久化数据.

Edit1:在部署应用程序时是否有可能创建“临时卷”,在取消部署应用程序时会被销毁?如果是这样,我该怎么做,以及如何使这个卷也可用于nginx?

编辑2:如果我没有弄错,一个选项是使用绑定挂载,但我已经读过,如果可能的话应该避免这些应用程序不依赖于主机文件系统的结构.

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:
最佳答案
是的,这是可能的 – 你几乎就在那里.通过将选项–clear传递给collectstatic,它将在收集静态文件之前清除目录.那不是你想要的行为.只需运行它没有那个标志:

python manage.py collectstatic --noinput

它应该只复制到目的地不存在的较新的静态文件.

展望未来,您可能需要考虑为静态文件和媒体文件(用户生成的内容)设置单独的容器,因为事情可能会让人感到困惑,否则如此处所示:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读