我正在使用 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 服务。