【发布时间】:2016-12-11 00:01:10
【问题描述】:
我工作的公司的开发人员要求我用 Docker 做一些不同的事情,然后我也习惯了。目标是拥有 2 个具有以下职责的容器:
容器 A:
将构建前端反应应用程序并将捆绑包放入名为app/dist/ 的目录的节点容器。完成后,容器将停止运行。
容器 B:
一个 alpine nginx 容器,它将提供来自 /usr/share/nginx/html/app 的静态文件。
已在容器 A 中构建的文件将使用将安装 <Container A>/app/dist 到 <Container B>/usr/share/nginx/html/app 的卷提供给容器 B。
请注意,在公共可访问端口和 nginx 容器之间有一个 HAProxy 层,该容器名为 app。
以上任务正在使用 docker compose 文件进行编排,如下所示:
version: '2'
volumes:
webapp_build_volume: {}
services:
webapp_build:
build:
context: .
dockerfile: 'config/nginx/dockerfile-builder'
volumes:
- webapp_build_volume:/app/dist
- webapp_static_volume:/app/src/app/static
app:
build:
context: 'config/haproxy'
dockerfile: 'dockerfile-app-haproxy'
links:
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- '80:80'
- '1936:1936'
web:
build:
context: .
dockerfile: 'config/nginx/dockerfile-web'
environment:
- EXCLUDE_PORTS=443
- VIRTUAL_HOST=*
depends_on:
- webapp_build
volumes:
- webapp_build_volume:/usr/share/nginx/html/app
目前这仅在第一次构建 docker compose 文件时有效。创建卷后,卷中的文件不再更新。我读过命名卷在建立后无法更新,但我无法确认。我找到了涉及运行 docker-compose rm --force && docker volume webapp_build rm 的解决方法,但如果可能的话,我希望不必杀死缓存的容器,因为 CI 服务会变得太慢。
如果我能澄清任何事情,请告诉我(我知道这里有很多活动部分)。请注意,我也在使用 docker 2 beta,但我看不出这会如何改变我在这里所做的任何事情。
【问题讨论】:
标签: nginx docker docker-compose docker-volume