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

时间:2017-04-13 17:27:54

标签: django nginx docker docker-compose

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

搬运工-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地址。

1 个答案:

答案 0 :(得分:2)

容器之间只需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/提供静态文件。