我尝试遵循docker-compose参考
https://docs.docker.com/compose/compose-file/
但无法获得有效的示例。
目前,我能最接近地创建一个命名卷并通过mongo服务上的docker-compose引用它的方法是通过docker在外部创建目录路径和卷
mkdir -p /home/$USER/volumes/app
docker volume create --opt type=none --opt device=/home/$USER/volumes/app --opt o=bind app
然后在运行docker-compose
时docker-compose up -d --build --force-recreate
使用docker-compose.yml
version: "3.3"
volumes:
app:
external: true
services:
mongodb:
container_name: app-mongodb
image: mongo:latest
ports:
- 27017:27017 # Mongo
volumes:
- app:/data
... # Other Services on other containers that write data to mongo
结果得到
docker volume list
DRIVER VOLUME NAME
local app
docker volume inspect app
[
{
"CreatedAt": "2019-04-05T11:34:07-04:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/app/_data",
"Name": "app",
"Options": {
"device": "/home/gitlab-runner/volumes/app",
"o": "bind",
"type": "none"
},
"Scope": "local"
}
]
然后我在mongodb容器上执行一个shell,并按预期在/ data / db目录中找到文件。
docker exec -it app-mongodb /bin/bash
ls /data/db
WiredTiger _mdb_catalog.wt collection-17-4313982868898758556.wt collection-25-4313982868898758556.wt diagnostic.data
...
然后我可以退出外壳程序并转到Mountpoint和Options.device,然后看到目录,但是没有看到在容器中看到的文件。我可以触摸Mountpoint和Options.device目录中的文件,然后在任一目录中查看它们。文件没有出现在容器中。
那么据我所知...
如何解决此问题,以便主机上的内容就是容器上的内容?