docker-compose 卷未安装到主机目录

docker-compose 卷未安装到主机目录

我正在使用 docker-compose 进行部署,使用 2 个docker-compose.yml设置,我在本地构建映像并从服务器上的 docker hub 中提取。

本地:

app:
  build: .
  volumes:
    - "./tmp/volume:/volume"

在服务器上:

app:
  image: username/repo:tag
  volumes:
    - "/data/volume:/volume"

在本地,我的卷可以正常挂载到指定目录,应用程序创建的文件在容器外部保留在那里。然而,在部署服务器上,这种情况不会发生。

文件但是,即使我的部署脚本运行,它仍然通过部署创建并持久保存,docker-compose down -v这可能会删除容器上的命名和匿名卷。

我确信我做错了什么,但我不知道是什么。

答案1

这里的服务器是 AWS 上的 EC2 节点,结果发现这是在 docker 守护进程启动后挂载 EBS 卷时出现的问题。

本质上,docker 在将卷挂载到之前就已经预期了文件系统/data,并且文件实际上被写入了影子/data目录,但由于挂载而不可见。这让我措手不及,主要是因为挂载发生在最初创建容器的部署之前。

因此,如果您在 EC2 节点上安装 EBS 卷,并且希望容器能够访问这些卷,请重新启动 docker 服务。

相关内容