我正在使用docker-compose作为基本的网络应用程序。构建映像时,它会复制(ADD
)中的静态JS文件,然后构建它们。
然后我想使用VOLUME
将该目录公开给其他容器。
E.g。
Dockerfile
ADD ./site/static /site/static
WORKDIR /site/static
RUN gulp
搬运工-compose.yml
app:
build: .
volumes:
- /site/static
http:
image: nginx
volumes_from:
- app
nginx.conf
location /static {
alias /site/static
}
(注意,这只是一个例子)
问题在于它似乎第一次工作(即当卷不存在时),但是从未被修改过的图像覆盖。如果我纯粹使用Dockerfile
,我可以将VOLUME
放在ADD
之后实现这一目标。
有没有办法允许这个,或者我接近它完全错了?
由于
答案 0 :(得分:0)
我可能错了,但我认为问题在于你何时(以及如果)
docker-compose down && docker-compose up
重新创建容器,新的"匿名"卷已创建。 你可以检查我的猜测:
docker volume ls
我会尝试使用命名卷,如下所示:
version: "2"
volumes:
app-volume: ~
services:
app:
build: .
volumes:
- app-volume:/site/static
http:
image: nginx
volumes:
- app-volume:/site/static
你需要docker-compose 1.6.0+并且需要一个版本为1.10.0+的Docker Engine才能使用docker-compose文件的第2版。
刚
app:
build: .
volumes:
- ./site/static:/site/static # maps host directory `./site/static` (relative to docker-compose.yml) to /site/static inside container
http:
image: nginx
volumes_from:
- app
并删除
ADD ./site/static /site/static
来自Dockerfile的