问题:
我想使用docker-compose将宿主机上的一个文件夹与特定容器共享。运行MongoDB的容器应该将其数据文件放在/var/lib/mongodb中,但这个文件夹应该是宿主机文件夹/var/lib/mongodb的挂载点。
但是,它仍然是容器内部的本地目录,而不是来自宿主机的共享目录。
有时还会出现以下警告:
警告:服务“mongodb”正在使用以前容器中的卷“/var/lib/mongodb”。主机映射“name_dbvolume”无效。删除现有容器(使用
docker-compose rm mongodb
)以使用主机卷映射。
docker-compose.yml
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:
MongoDB-容器的Dockerfile:
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"]
被配置为将/var/lib/mongodb作为数据目录。下面的命令尝试从主机使用此文件夹:
VOLUME [ "/var/lib/mongodb" ]
我在这里做错了什么?