Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何参数化Dockerfile?_Java_Amazon Web Services_Docker - Fatal编程技术网

Java 如何参数化Dockerfile?

Java 如何参数化Dockerfile?,java,amazon-web-services,docker,Java,Amazon Web Services,Docker,我正在为我们的Spring Boot应用程序创建Dockerfile。应用程序需要几个命令行参数。在Dockfile的末尾: CMD java-jar Application.jar--bucket=bucket.list--key=lost 但是在Dockfile中对bucket和key的值进行硬编码是否是一种最佳做法 如果可以的话,我可以接受。否则,我想知道如何参数化Dockfile 该应用程序将部署在AWS上,如果这为更多建议打开了大门。Docker design专注于尽可能独立于主机环境

我正在为我们的Spring Boot应用程序创建Dockerfile。应用程序需要几个命令行参数。在Dockfile的末尾:

CMD java-jar Application.jar--bucket=bucket.list--key=lost

但是在
Dockfile
中对
bucket
key
的值进行硬编码是否是一种最佳做法

如果可以的话,我可以接受。否则,我想知道如何参数化
Dockfile


该应用程序将部署在AWS上,如果这为更多建议打开了大门。

Docker design专注于尽可能独立于主机环境,包括在构建Docker映像时。有人试图让Docker build访问主机环境变量,但为了主机的独立性而被拒绝。这里还有一些适合您的问题的解决方法

总之,Application.jar应该做什么?如果应用程序应该在容器内运行(而不是在构建时),那么启动它的正确方法是在启动容器时使用自定义脚本运行。在那里,您可以设置您的凭证或希望从环境变量访问的任何其他信息,这些信息可以在启动容器时设置:
docker run-e“MYKEY=secret”-e“MYBUCKET=bucket”myuser/myapp/my/custom/script

您可以使用

生成参数允许您指定在生成时使用
--Build arg arg_NAME=arg_VALUE
命令行参数执行
docker Build
时应用的参数


环境变量允许您使用
-e“ENV_NAME=ENV_VALUE”
命令行参数指定运行时应用的参数。

我的应用程序是基于Spring Boot的REST应用程序。我没有Spring(或Spring Boot)方面的经验但我认为这是一种用webapp服务器(Tomcat/Jetty…)打包应用程序的方法,不是吗?如果是这样,我认为您应该在Docker构建期间运行它,但在启动容器时(使用自定义启动脚本或直接运行命令启动它)。因此,您不需要在Dockerfile中访问这些参数,但在启动脚本中,您可以将参数作为环境变量传递。