gpt4 book ai didi

docker - 构建期间的Docker ADD文件夹然后暴露给VOLUME

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

我正在将docker-compose用于基本的Web应用程序。构建镜像后,它将复制静态JS文件到(ADD)中,然后进行构建。

然后,我想使用VOLUME将目录暴露给其他容器。

例如。

Docker文件

ADD ./site/static /site/static
WORKDIR /site/static
RUN gulp

docker-compose.yml
app:
build: .
volumes:
- /site/static

http:
image: nginx
volumes_from:
- app

nginx.conf
location /static {
alias /site/static
}

(注意,这只是一个例子)

问题在于它似乎是第一次工作(即,当该卷不存在时),但是随后永远不会被修改后的图像覆盖。如果我仅使用 Dockerfile,则可以通过将 VOLUME放在 ADD之后来实现。

有没有办法允许这样做,还是我完全错误地对待它?

谢谢

最佳答案

可能的解决方案1

我可能是错的,但我认为问题在于您何时(以及是否)

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。

可能的解决方案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

关于docker - 构建期间的Docker ADD文件夹然后暴露给VOLUME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37207282/

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