Информация: Этот пост является одним из статей в контексте этого поста: Huawei Cloud ECS Server Notes
Во-первых, создайте храброподобный репозиторий для Mongodb:
mkdir ~/docker/mongo_8301 mkdir ~/docker/mongo_8301/db mkdir ~/docker/mongo_8301/config mkdir ~/docker/mongo_8301/log
Затем создайте файл запуска для запуска контейнера Docker:
touch ~/launchers/docker_mongo_8301.sh vi ~/launchers/docker_mongo_8301.sh
Заполните следующий код в файл запуска:
docker rm -f mongo_docker_8301 docker run -d -p 8301:27017 \ --name mongo_docker_8301 \ -v /home/jemaloQ/docker/mongo_8301/config:/data/configdb \ -v /home/jemaloQ/docker/mongo_8301/db:/data/db \ -v /home/jemaloQ/docker/mongo_8301/log:/data/log \ mongo --auth
Теперь запустить Docker, используя строку CMD: sh ~/launchers/docker_mongo_8301.sh
. Ждать до конца изображения. Тогда проверьте, если mongo_docker_8301
работает правильно, выполняя Docker PS -A | grep mongo.
.
Введите внутреннюю часть контейнера и выполните Mongo Admin
Для входа в систему базы данных «admin» по умолчанию
docker exec -it mongo_docker_8301 mongo admin
Создать пользователь роли Администратор
:
> db.createUser({user:'admin',pwd:'JemaloAdmin', roles:[ { role:'userAdminAnyDatabase', db: 'admin'} ] }) > exit
Позже я могу войти в систему «admin» как пользователь админ
:
docker exec -it mongo_docker_8301 mongo admin > db.auth('admin','JemaloAdmin')
Я могу создать других пользователей, указав их информацию и роли. Теперь я создаю пользователя «Джемалок» Как «DBowner» базы данных «Знание» :
> db.createUser({user:'jemaloQ',pwd:'123456', roles:[ { role:'dbOwner', db: 'knowledge'} ] })
Снимок моей шпультской консоли:
Теперь попробуйте подключить недавно запущенный MongoDB Python:
from pymongo import MongoClient client = MongoClient("mongodb://jemaloQ:123456@111.22.123.117:8301") # print all the Databases names in Mongodb, returns empty list if no database has been created client.list_database_names() # connect to the 'knowledge' database, if it does not exist, this line shall create it and then connect to it db = client['knowledge'] # get the 'test' collection of the 'knowledge' database, if it does not exist, this line shall create it col = db.get_collection('test') # this item shall be uploaded to my database item_dic = {'uid': 123, 'name': 'jemaloQ'} # a query filter for checking whether an item with same id exists or not query_filter = {"uid": item_dic["uid"]} # now insert the item to 'test' collection of knowledge' database col.update( query_filter, {'$setOnInsert': item_dic}, upsert=True) # now, we can see the 'knowledge' database since it is no longer empty client.list_database_names() # => ['knowledge']
Таким образом, я теперь реализовал свой сервис MongoDB, используя Docker на моем сервере.
Оригинал: «https://dev.to/jemaloqiu/install-mongodb-with-docker-in-ubuntu-18-04-4pbi»