java - Docker - 无法在入口点内使用占位符

标签 java docker dockerfile

我有这个 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/

相关文章:

java - 将摘要身份验证添加到 SOAP 请求

docker - 运行并行docker构建会给出错误消息->删除中间容器<id>时出错:容器<id>:驱动程序 “windowsfilter”失败

java - Spring MVC @Controller 的处理程序方法的参数如何在运行时自动解析?

java - 将图像放在 Java 中随机创建的按钮上

Java:循环等待直到ThreadPoolExecutor的任务完成再继续

python - Docker容器运行后存在且日志中没有错误

启用 VPN 后,Windows 10 上的 docker 无法挂载卷

docker - 如何使用 docker-compose.yml 中的值将文件添加到 Docker 镜像中的卷?

docker - 使用环境变量在Dockerfile中设置容器版本

docker - 更改Docker容器中的dotnet核心端口