我有2个容器:web
和nginx
。当我构建web
容器时,在容器内生成前端的静态资源。
现在,我希望在web
和nginx
之间共享这些资产,而无需在主机上使用卷。否则,我将不得不在主机端构建这些静态资产,然后将其作为卷包含到web
容器中并与nginx
容器共享。从构建系统的角度来看,这是不可取的。
有没有办法在web
容器中构建静态资源,然后与nginx
共享?
答案 0 :(得分:1)
否则,我必须在主机端构建这些静态资产,然后将其作为卷包含到Web容器中并与nginx容器共享。
这句话似乎不正确。
如果静态资产是作为构建过程的一部分生成的,那么只需在运行时将该卷安装在该目录的顶部。 Docker将负责将基础内容复制到卷中,之后您可以使用--volumes-from
在nginx容器中访问它。
例如,如果我从这个Dockerfile
开始,用于我的网络容器:
FROM alpine
RUN apk add --update darkhttpd
COPY assets /assets
CMD ["darkhttpd", "/assets"]
我现在有一个目录/assets
,其中包含我的静态资产。如果我
将此图像运行为:
docker run -v /assets --name web web
然后/assets
将(a)成为一个卷,(b)包含内容
/assets
目录。
现在你可以启动一个nginx容器并与它共享这些数据:
docker run --volumes-from web nginx
nginx容器将包含一个/assets
目录,其中包含您的
静态资产。
我已经整理了一个小例子here。