我有这个 Dockerfile:
FROM java:8
ARG HOST
...
...
ENTRYPOINT java -DHOST=${HOST} -jar ./app.jar
我通过必要的构建参数构建 docker 镜像:docker build -t co/myprogram --build-arg=HOST=myhost.com 。
但是,当我运行图像时:docker run co/myprogram
我的程序出现异常,因为占位符没有替换 HOST 值。网址看起来像 http:///action/get而不是 http://myhost.com/action/get ..
有没有办法在 ENTRYPOINT 中使用占位符?
最佳答案
ARG 不用于插入 ENTRYPOINT。
要实现你想做的事情,你可以添加一行 ENV HOST $HOST
。
然后入口点将在运行时使用 $HOST,而不是构建时的内插值,但是,变量将设置为构建时设置的默认值,但仍然可以覆盖。
这是一个例子:
$ cat Dockerfile
FROM busybox
ARG what
ENV what $what
RUN echo ${what} > /tmp/${what}
ENTRYPOINT cat /tmp/${what}
$ docker run -ti $(docker build -q --build-arg=what=test . )
test
关于java - Docker - 无法在入口点内使用占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37340649/