django - 如何在 Docker Compose 中将目录从一个容器复制到另一个容器?

标签 django nginx docker docker-compose

我有两个 docker-compose 服务 nginxdjango,在我的 command shell 脚本中,我执行一个 gulp 任务来构建我的静态文件。构建过程完成后,我想执行复制命令将这些文件复制到 nginx 容器,但我不确定使用什么命令。

docker-compose.yml

django:
  build:
    context: .
    dockerfile: ./compose/django/Dockerfile
  user: django
  depends_on:
    - postgres
    - redis
  command: /gunicorn.sh
  env_file: .env

nginx:
  build: ./compose/nginx
  depends_on:
    - django

  ports:
    - "0.0.0.0:80:80"

gunicorn.sh

#!/bin/sh
gulp build
python manage.py migrate
/usr/local/bin/gunicorn config.wsgi -w 4 -b 0.0.0.0:5000 --chdir=/app

我猜我可以在 gunicorn.sh 中使用 scp,但我不确定如何引用 nginx 服务的 IP 地址。

最佳答案

share volumes在容器之间,不需要实际复制文件。

定义卷的方法有多种,但我想您不希望这些文件位于主机文件系统上。

尝试如下操作:

volumes:
  - static:

django:
  build:
    context: .
    dockerfile: ./compose/django/Dockerfile
  user: django
  depends_on:
    - postgres
    - redis
  command: /gunicorn.sh
  volumes:
    - static:/path/to/your/static/files
  env_file: .env

nginx:
  build: ./compose/nginx
  depends_on:
    - django
  volumes:
    - static:/some/dir/to/serve/files/from/
  ports:
    - "0.0.0.0:80:80"

然后配置 nginx 来为 /some/dir/to/serve/files/from/ 中的静态文件提供服务.

关于django - 如何在 Docker Compose 中将目录从一个容器复制到另一个容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398353/

相关文章:

docker - Docker-在DNS缓存中未找到主机名

python - 对于从父类继承的模型,Django 不发送 save() 信号?

python - Django 同步数据库 : access denied

python - 如何将 ModelAdmins 从一个应用程序拆分到多个 block

javascript - 库伯内特斯 : Pause main script while keeping pod alive

git - 无法通过 ssh 将私钥添加到 docker build

python - Django 查询集 - 确保结果仅检索一次

django - 我如何强制 nginx 使用来自上游服务器的 header 将响应保存在缓存文件夹中?

ssl - 错误 turnkey linux confconsole dehydrated .well-known/acme-challenge 404 NOT FOUND

nginx rtmp 代理流热插拔?