如何将外部application.yaml文件传入Docker容器并运行镜像
用外部application.yaml运行Docker镜像的正确方法
先纠正你之前命令的问题
- 第一个命令错误修改了
--entrypoint,这个参数是用来指定容器启动时执行的程序,不是配置文件路径,完全不符合需求 - 第二个命令存在拼写错误(
dokcer应为docker),且没有将本地文件挂载到容器内,容器无法访问宿主机的/home/durgpal/application.yaml
两种可行的解决方案
方案一:利用已定义的VOLUME挂载单个文件
你的Dockerfile已经声明了VOLUME ["/app/config"],且默认启动参数指定了--spring.config.location=config/application.yaml,只要把本地的配置文件挂载到容器内的/app/config/application.yaml,就会自动覆盖镜像内置的配置:
docker run -it -v /home/durgpal/application.yaml:/app/config/application.yaml demo
方案二:直接指定外部配置文件的挂载路径并修改启动参数
如果不想挂载到默认的/app/config目录,可以将文件挂载到容器任意路径,然后通过启动参数指定配置文件位置:
docker run -it -v /home/durgpal/application.yaml:/tmp/application.yaml demo --spring.config.location=/tmp/application.yaml
额外选项:挂载整个配置目录
如果有多个配置文件需要替换,可以直接挂载整个目录到容器的/app/config:
docker run -it -v /home/durgpal/config_dir:/app/config demo
(注:确保/home/durgpal/config_dir下存在application.yaml文件)
内容的提问来源于stack exchange,提问作者Durgpal Singh
相关产品推荐
相关产品推荐

