Docker 卷安装问题到已安装的文件夹

问题描述

我们已经使用 (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="$1"
until [  -d "$mountedfolder" ];
 do sleep 2;
  echo error "Mounted folder not found : $mountedfolder";
   done;

它是一个弹簧启动应用程序。我已经删除了 DockerFile 中的入口点,并使用 docker compose(java -jar /app.jar") 中的命令启动了应用程序

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...