我想使用docker-compose从docker主机与特定容器共享一个文件夹。运行MongoDB的容器应将其数据文件放入/ var / lib / mongodb,但此文件夹应该是hosts文件夹/ var / lib / mongodb的挂载。
但它仍然是容器内的自己的本地目录,而不是来自主机的共享目录。
有时它最终会出现以下警告:
警告:服务“mongodb”正在使用卷“/ var / lib / mongodb” 以前的容器。主机映射“name_dbvolume”无效。 删除现有容器(使用
docker-compose rm mongodb
) 使用主机卷映射。
version: '2'
services:
loopback:
build: .
expose:
- "80"
- "443"
- "28015"
- "29015"
ports:
- 3000:3000
links:
- mongodb
environment:
VIRTUAL_HOST: api.xxxxxx.com
VIRTUAL_PORT: 3000
LETSENCRYPT_EMAIL: yyyyyy@xxxxxxx.com
LETSENCRYPT_HOST: api.xxxxx.com
mongodb:
build: ./MongoDB
ports:
- "27017:27017"
- "27018:27018"
- "27019:27019"
- "28017:28017"
volumes:
- dbvolume:/var/lib/mongodb
volumes:
dbvolume:
FROM mongo:latest
RUN mkdir -p /var/lib/mongodb && \
touch /var/lib/mongodb/.keep && \
chown -R mongodb:mongodb /var/lib/mongodb
ADD mongodb.conf /etc/mongodb.conf
VOLUME [ "/var/lib/mongodb" ]
# EXPOSE 27017
USER mongodb
WORKDIR /var/lib/mongodb
ENTRYPOINT ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"]
CMD ["--quiet"]
mongodb-container配置为MongoDB使用/ var / lib / mongodb作为数据目录。使用以下命令,我们尝试使用主机中的此文件夹:
VOLUME [“/ var / lib / mongodb”]
我在这里错了什么?
答案 0 :(得分:1)
您的撰写配置会设置名为dbvolume
默认情况下,命名卷将存储在/var/lib/docker
中:
→ docker volume inspect dbvolume
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/dbvolume/_data",
"Name": "dbvolume",
"Options": {},
"Scope": "local"
}
]
Mounting a host directory as a volume在撰写文件中略有不同。
volumes:
- /var/lib/mongodb:/var/lib/mongodb
源仍在左侧,但您指定的是完整路径而不是名称。