在一个容器中,我有一个带有编译步骤的HTML应用程序。我希望在<proxy name="XXX">
...
<enableSec/>
<policy key="conf:/policies/policy-xxx.xml"/>
</proxy>
之上提供此服务。我不在乎安装我的本地文件系统。我想要的是在重建所有内容后让nginx包含最新版本的代码。
但每次我nginx
或up
我的run
容器时,它都包含一个随机旧版本的静态文件! (编译和未编译的)。
这就是docker-compose的样子:
nginx
这是快速入门(简化)中的Dockerfile
quickstart:
build: ./services/quickstart
volumes:
- /var/www/html/quickstart
nginx:
image: nginx:1.9.11
volumes_from:
- quickstart
depends_on:
- quickstart
ports:
- 80:80
我无法使用指向本地文件系统的卷,因为它不会拥有FROM codesimple/elm:0.16
WORKDIR /var/www/html/quickstart
# compile code
ADD ./ /var/www/html/quickstart/
RUN elm-make --yes Main.elm --output elm.js
文件,该文件是在构建docker镜像时创建的。
当我浏览快速入门时,我会看到最新的文件:
elm.js
但是当我浏览nginx时,我缺少elm.js,或者包含旧版本的index.html。
$ docker-compose run quickstart bash
> ls /var/www/html/quickstart
... index.html Main.elm elm.js ...
我该如何解决这个问题?
答案 0 :(得分:0)
您不应该使用卷代码,因为Compose preserves volumes when recreating containers。代码应随图像而变化。解决它:
docker-compose rm
删除旧容器volumes:
docker-compose up
如果您对图片进行了更改,请确保在运行docker-compose build
之前同时up
。在1.7.0(即将发布的版本)中,您将能够up --build
。