gpt4 book ai didi

nginx - docker-compose卷不包含来自镜像的最新静态代码

转载 作者:行者123 更新时间:2023-12-02 20:23:29 29 4
gpt4 key购买 nike

在一个容器中,我有一个带有编译步骤的HTML应用程序。我想通过nginx提供此服务。我不在乎挂载本地文件系统。我想要的是让nginx在重建所有内容后包含最新版本的代码。

但是每次我的up容器runnginx时,它都包含一个随机的旧的,过时的静态文件版本! (已编译和未编译的)。

这是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

我不能使用指向本地文件系统的卷,因为它不会包含在构建docker镜像时创建的 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 preserves volumes when recreating containers。代码应随图像而变化。要解决这个问题:

  • docker-compose rm删除旧容器
  • 从撰写文件
  • 中删除 volumes:
  • docker-compose up

  • 如果您对图像进行了更改,请在运行 docker-compose build之前确保也添加 up。在1.7.0(即将发布的版本)中,您将可以执行 up --build

    关于nginx - docker-compose卷不包含来自镜像的最新静态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040468/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com