[英]docker-compose environment variables used as path for volumes don't get resolved
[英]docker-compose volumes don't contain latest static code from image
在一个容器中,我有一个带有编译步骤的HTML应用程序。 我想在nginx
上提供这个服务。 我不关心安装我的本地文件系统。 我想要的是在重建所有内容后让nginx包含最新版本的代码。
但是,每次我up
或run
我的nginx
容器时,它都会包含一个随机的旧旧静态文件版本! (编译和未编译的)。
这是docker-compose的样子:
quickstart:
build: ./services/quickstart
volumes:
- /var/www/html/quickstart
nginx:
image: nginx:1.9.11
volumes_from:
- quickstart
depends_on:
- quickstart
ports:
- 80:80
这里是快速启动中的Dockerfile(简化)
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
我不能使用指向我的本地文件系统的卷,因为它不会具有在elm.js
时创建的elm.js
文件。
当我浏览快速入门时,我看到了最新的文件:
$ docker-compose run quickstart bash
> ls /var/www/html/quickstart
... index.html Main.elm elm.js ...
但是当我浏览nginx时,我缺少elm.js,或者包含旧版本的index.html。
$ docker-compose run nginx bash
> ls /var/www/html/quickstart
... index.html Main.elm ...
我怎样才能解决这个问题?
您不应将卷用于代码,因为Compose在重新创建容器时会保留卷 。 代码应随图像而变化。 要解决这个问题:
docker-compose rm
删除旧容器 volumes:
从撰写文件中 docker-compose up
如果您对映像进行更改,请确保在up
之前也进行docker-compose build
。 在1.7.0(即将发布的版本)中,您可以进行up --build
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.