我有两个 docker-compose 服务 nginx
和 django
,在我的 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/