Docker 已安装文件夹的卷安装问题
Docker volume mount issue to a mounted folder
我们使用 (docker-compose) 将 Linux 机器中的一个文件夹安装到我们的 docker 容器应用程序
卷:
- /mnt/share:/mnt/share
/mnt/share 是机器中挂载的文件夹(不是机器中的真实文件夹,它是我们的文件服务器)。如果由于某种原因挂载丢失然后重新挂载。
在重新启动容器之前,docker 容器中的应用程序 运行 无法访问已装载的文件夹。
您可能希望使用卷驱动程序而不是绑定安装本地文件系统。
参见 Share data among machines
如果不进一步了解您的环境,就不可能给出更详细的答案。了解您的容器是否在 AWS 数据中心运行,或者您是否使用 nfsv3、nfsv4 或 cifs 进行挂载会很有帮助。
以下解决方案帮助我继续。
我写了一个脚本来检查该文件夹是否存在。
然后该脚本在 docker-compose 文件中称为命令。
version:"3"
services:
flowable-task-handler:
build: flowable-task-handler
ports:
- "8085:8085"
command: bash -c "/wait_for_file_mount.sh /mnt/share/fileshares/ && java -jar /app.jar"
wait_for_file_mount.sh
#!/bin/sh
# Used to check whether the mount folder is ready for flowable to use
mountedfolder=""
until [ -d "$mountedfolder" ];
do sleep 2;
echo error "Mounted folder not found : $mountedfolder";
done;
它是一个 spring 启动应用程序。我已经删除了 DockerFile 中的入口点,并使用 docker compose(java -jar /app.jar")
中的命令启动了应用程序
将挂载传播定义为“:shared”应该可以解决这个问题:
-v /autofs:/autofs:共享\
不确定 docker-compose - 我并没有真正使用它。但是您可以定义一个带有挂载传播的 docker 卷并将其放入您的 DC 文件中。
我们使用 (docker-compose) 将 Linux 机器中的一个文件夹安装到我们的 docker 容器应用程序 卷: - /mnt/share:/mnt/share
/mnt/share 是机器中挂载的文件夹(不是机器中的真实文件夹,它是我们的文件服务器)。如果由于某种原因挂载丢失然后重新挂载。 在重新启动容器之前,docker 容器中的应用程序 运行 无法访问已装载的文件夹。
您可能希望使用卷驱动程序而不是绑定安装本地文件系统。 参见 Share data among machines
如果不进一步了解您的环境,就不可能给出更详细的答案。了解您的容器是否在 AWS 数据中心运行,或者您是否使用 nfsv3、nfsv4 或 cifs 进行挂载会很有帮助。
以下解决方案帮助我继续。 我写了一个脚本来检查该文件夹是否存在。 然后该脚本在 docker-compose 文件中称为命令。
version:"3"
services:
flowable-task-handler:
build: flowable-task-handler
ports:
- "8085:8085"
command: bash -c "/wait_for_file_mount.sh /mnt/share/fileshares/ && java -jar /app.jar"
wait_for_file_mount.sh
#!/bin/sh
# Used to check whether the mount folder is ready for flowable to use
mountedfolder=""
until [ -d "$mountedfolder" ];
do sleep 2;
echo error "Mounted folder not found : $mountedfolder";
done;
它是一个 spring 启动应用程序。我已经删除了 DockerFile 中的入口点,并使用 docker compose(java -jar /app.jar")
中的命令启动了应用程序将挂载传播定义为“:shared”应该可以解决这个问题:
-v /autofs:/autofs:共享\
不确定 docker-compose - 我并没有真正使用它。但是您可以定义一个带有挂载传播的 docker 卷并将其放入您的 DC 文件中。