【发布时间】:2019-12-12 10:37:16
【问题描述】:
我想知道如何配置 docker setup (docker-compose) 以提供我的 Spring 启动应用程序使用的配置文件。
配置文件名为services.xml,位于应用程序的/lib/conf 目录中。该文件是使用默认配置部署的,但是我希望该文件在主机中,以便每当我需要更改配置时,我应该在主机中进行编辑,容器将读取更新后的文件。
docker-compose.yml
version: '3.1'
services:
my-app:
image: my-app
container_name: my-app
# restart: always
ports:
- 8443:8443
volumes:
- ./my-app/conf:/opt/lib/my-app/lib/conf:rw
运行后的预期结果: docker-compose up
我希望这应该创建目录,将容器中的默认 services.xml(以及 /opt/lib/my-app/lib/conf 中的所有其他文件)复制到该目录中,以供我编辑.
实际结果 运行 docker-compose 后,它会在 my-app 目录中创建一个空目录。 my-app 无法读取 services.xml 文件并且应用程序无法启动(因为它取决于此文件)。
【问题讨论】:
-
您是否尝试过使用文件的绝对路径?
-
还没有。与将目录映射到主机和容器有什么不同?
-
@Jocke,我收到错误:
mounting \\\"/home/ubuntu/my-app/conf/services.xml\\\" to rootfs \\\"/var/lib/docker/overlay2/87ecda1732ce960a75263ca499b880d29550a70f969f06ba14ce79d1c5e06485/merged\\\" at \\\"/var/lib/docker/overlay2/87ecda1732ce960a75263ca499b880d29550a70f969f06ba14ce79d1c5e06485/merged/opt/lib/my-app/lib/conf/services.xml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type -
根据stackoverflow.com/questions/52711305/…,无法在docker中挂载单个文件。
-
看来,您宁愿使用
configuration-server,也不愿尝试将配置映射出容器。如果你真的需要这样做,这个stackoverflow.com/questions/30652299/… 会很有帮助。我看不出来,反正这是正确的方法。
标签: java spring-boot docker docker-compose