运行 docker 图片带参数

Running docker image with argument

我正在使用 spring-boot 以及 docker 图像。

我 运行我的 springboot 应用程序直接来自 IntelliJ 名称为 runtime 一些参数如下

-DCONFIG_DIR=D:\baseapimanager\runtime\config

我能够运行成功。

但是通过创建 docker 图像并 运行 绑定该图像,它无法 运行。 因为我不知道如何在 运行 宁 docker 图像时传递参数。

在这里我也分享了我的 Docker 文件内容。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/docker-runtime.jar docker-runtime.jar
EXPOSE 8091
ENTRYPOINT ["java","-jar","docker-runtime.jar"]

并且 运行 在 docker 命令下,我正在尝试为其创建图像文件。

docker build -f Dockerfile -t docker-runtime .

执行以下命令后 运行 这个生成的图像文件。

docker run -p 8091:8091 docker-runtime

无需通过该论点并用该论点评论业务,它工作得很好。

任何帮助将不胜感激。

如果 CONFIG_DIR 是您使用 Spring 配置 @Value@ConfigurationProperties 使用的参数,您也可以将参数作为环境变量传递。

环境变量可以通过-e

传递给容器
docker run -p 8091:8091 -e CONFIG_DIR=D:\baseapimanager\runtime\config docker-runtime

但是由于 D:\baseapimanager\runtime\config 看起来像 Windows 路径,在 Docker 容器中不可见,因此您必须将配置添加到 docker 图像或者安装一个 docker 卷并且参数必须指向该卷。

因此,要将参数传递给 docker 构建,请执行以下操作....

  1. 参数-DCONFIG_DIR

在 docker 撰写文件中添加以上行.....

  1. $-DCONFIG_DIR

在 docker 文件中使用上述内容并访问变量

  1. docker-compose build --build-arg -DCONFIG_DIR = ''

我在 Docker 文件中进行了以下更改。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/docker-runtime.jar docker-runtime.jar
EXPOSE 8091
ENTRYPOINT ["java","-jar","-DCONFIG_DIR=/shareddata","docker-runtime.jar"]

虽然 运行 我使用以下命令绑定了该地址的图像,但它工作正常。

docker run -p 8091:8091 --mount type=bind,source=/c/Users/lenovo/data,target=/shareddata docker-runtime

这解决了我的问题。