需要一些关于dockerizing MongoDB的建议吗
我正在玩MongoDB和Docker,在这一点上,我试图创建一个有用的形象,供自己在工作中使用。我创建了以下需要一些关于dockerizing MongoDB的建议吗,mongodb,docker,docker-compose,dockerfile,Mongodb,Docker,Docker Compose,Dockerfile,我正在玩MongoDB和Docker,在这一点上,我试图创建一个有用的形象,供自己在工作中使用。我创建了以下Dockerfile: FROM mongo:2.6 VOLUME /data/db /data/configdb CMD ["mongod"] EXPOSE 27017 我已将其添加到我的docker compose.yml文件中: version: '2' services: ### PHP/Apache Container php-apache: c
Dockerfile
:
FROM mongo:2.6
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
关于我所做的设置,我有一些问题:
- 我需要
中的Dockerfile
,还是足够让这行VOLUME/data/db/data/configdb
位于~/data/mongo:/data/configdb
docker compose.yml
- 我假设(我是从中获得的)一旦我构建了Mongo映像,我将创建一个数据库,并使用密码向用户授予完全权限,因为它在环境变量上?我是对的?(我找不到任何有用的东西)
- 如何将当前mongo备份(几个JSON文件)导入到应该在mongo容器上创建的数据库中?我相信我需要运行
命令,但是如何运行呢?我是否需要创建一个脚本并在每次容器启动时运行它?还是应该在映像构建期间运行?最好的方法是什么mongorestore
卷
,但它作为元数据很有用<代码>卷在装载Docker卷(非主机目录)时提供了一些特殊的“卷创建时复制数据”语义,这将影响数据初始化方法的选择
我假设(我从这里开始)一旦我构建了Mongo映像,我就会创建一个数据库,并使用环境变量上的密码向用户授予完全权限?我是对的?(我在这里找不到任何有用的东西)
MONGO_用户
、MONGO_数据库
和MONGO_通行证
请勿在或对mongod
本身执行任何操作
mongo映像增加了对类似环境变量的支持:
MONGO\u INITDB\u ROOT\u用户名
MONGO\u INITDB\u ROOT\u密码
MONGO\u INITDB\u数据库
卷
复制到它创建的卷中。如果要装载主机目录,可能需要在运行时进行初始化
mongorestore
需要运行的服务器才能还原到。在构建过程中,您需要。在运行时,您可能需要包含一个启动脚本来检查数据库是否存在
Mongo能够将任何空目录初始化为一个空的Mongo实例,所以您不必担心Mongo无法启动我试着从ANTILE开始,但对于一项任务来说可能是太多了,也许以后,如果这个还在增长,我会重新考虑的。即使我认为您的答案是正确的,您是否可以通过为bash添加一个简单的脚本示例来改进它,该示例允许创建一个DB并添加一个用户?我一点也不知道