我正在为Spring Boot应用程序创建一个Dockerfile。该应用程序需要几个命令行参数。在Dockfile
:
CMD java -jar Application.jar --bucket = bucket.list --key = lost
但是,对bucket
中key
和Dockfile
的值进行硬编码是最佳做法吗?
如果没问题,那么我可以忍受。否则,我想知道如何参数化Dockfile
。
如果能够为更多建议打开大门,那么该应用程序将部署在AWS上。
答案 0 :(得分:4)
Docker设计的重点是尽可能独立于Host环境,包括构建Docker镜像时。有a request让Docker构建对主机环境变量的访问,但是它被拒绝寻找主机的独立性。在那里,它还评论了一些可以解决您问题的解决方法。
无论如何,应该做什么做Application.jar?如果应用程序应该在容器内运行(而不是在构建时间内),则启动它的正确方法是在启动容器时使用自定义脚本运行。在那里,您可以设置您的凭据或您希望从环境变量访问的任何其他信息,可以在启动容器时设置:docker run -e "MYKEY=secret" -e "MYBUCKET=bucket" myuser/myapp /my/custom/script
答案 1 :(得分:0)
您可以使用environment variables or build arguments。
使用构建参数,您可以指定在使用project
命令行参数执行docker build
时在构建时应用的参数。
环境变量使您可以指定在使用--build-arg ARG_NAME=ARG_VALUE
命令行参数执行docker run
时在运行时应用的参数。