我正在玩MongoDB和Docker,在这一点上,我正尝试为自己创建一个有用的图像,以便在工作中使用。我创建了以下Dockerfile
:需要一些建议dockerizing MongoDB
FROM mongo:2.6
MAINTAINER Reynier Perez <[email protected]>
VOLUME /data/db /data/configdb
CMD ["mongod"]
EXPOSE 27017
而且我已经把它添加到我的docker-compose.yml
文件:
version: '2'
services:
### PHP/Apache Container
php-apache:
container_name: "php55-dev"
image: reynierpm/php55-dev
ports:
- "80:80"
environment:
PHP_ERROR_REPORTING: 'E_ALL & ~E_DEPRECATED & ~E_NOTICE'
volumes:
- ~/mmi:/var/www
- ~/data:/data
links:
- mongodb
### MongoDB Container
mongodb:
container_name: "mongodb"
build: ./mongo
environment:
MONGODB_USER: "xxxx"
MONGODB_DATABASE: "xxxx"
MONGODB_PASS: "xxxx"
ports:
- "27017:27017"
volumes:
- ~/data/mongo:/data/db
我有一个关于这个设置我已经取得了一些问题:
- 我是否需要
VOLUME /data/db /data/configdb
在Dockerfile
或足够有这条线~/data/mongo:/data/configdb
在docker-compose.yml
? - 我假设(和我从here),只要我建立的Mongo映像,我将创建一个数据库,并授予用户密码的完整权限,因为它是在环境变量?我是对的? (我找不到任何有用的东西here)
- 如何将当前mongo备份(多个JSON文件)导入到应该在mongo容器上创建的数据库中?我相信我需要运行
mongorestore
命令,但是如何?我是否需要创建脚本并在每次容器启动时运行它?或者我应该在图像构建过程中运行?什么是最好的方法?
我试着从Ansible开始,但是对于单个任务来说可能稍后如果这仍然在增长,我会再考虑一次。即使我接受你的答案为正确的答案,你是否可以改进它,为bash添加一个简单的脚本示例,允许创建一个数据库并添加一个用户?我没有线索 – ReynierPM