Развёртывания MongoDB в Docker
Инструкция и примеры файлов для развёртывания MongoDB в Docker с выносом всех рабочих данных в /mnt/disk_sdb/. Это позволит сохранять данные между перезапусками контейнера и на физическом диске.
1. Подготовка директории на хосте
Создайте директорию для данных MongoDB на вашем хосте (если её ещё нет):
sudo mkdir -p /mnt/disk_sdb/mongodb/data
sudo chown -R 999:999 /mnt/disk_sdb/mongodb/data- 999:999— стандартный UID:GID пользователя- mongodbвнутри контейнера.
2. Docker Compose файл
Создайте файл docker-compose.yml в удобном месте (например, /opt/mongodb/docker-compose.yml):
version: '3.8'
services:
 mongodb:
   image: mongo:6.0
   container_name: mongodb
   restart: unless-stopped
   environment:
     MONGO_INITDB_ROOT_USERNAME: root
     MONGO_INITDB_ROOT_PASSWORD: your_secure_password
   volumes:
     - /mnt/disk_sdb/mongodb/data:/data/db
   ports:
     - "27017:27017"
   networks:
     - mongodb_network
networks:
 mongodb_network:
   driver: bridgeПояснения:
- image: mongo:6.0— версия MongoDB (можно использовать- latestили другую).
- MONGO_INITDB_ROOT_USERNAMEи- MONGO_INITDB_ROOT_PASSWORD— учётные данные суперпользователя (обязательно измените пароль!).
- volumes: - /mnt/disk_sdb/mongodb/data:/data/db— монтирование директории с хоста в контейнер.
- ports: - "27017:27017"— проброс порта для подключения извне.
- networks— изоляция сети (опционально, но рекомендуется).
3. Запуск MongoDB
Перейдите в директорию с docker-compose.yml и выполните:
docker-compose up -d
Проверьте статус контейнера:
docker ps
Вывод должен содержать строку с mongodb.
4. Подключение к MongoDB из вашего .NET Core приложения
Обновите appsettings.json в вашем проекте:
{
 "MongoDB": {
   "ConnectionString": "mongodb://root:your_secure_password@localhost:27017",
   "DatabaseName": "SchoolManagementSystem"
 }
}Пояснения:
- mongodb://root:your_secure_password@localhost:27017— строка подключения с учётными данными.
- SchoolManagementSystem— имя вашей базы данных (можно изменить).
5. Проверка работы
Подключение к MongoDB изнутри контейнера:
docker exec -it mongodb mongosh -u root -p your_secure_password
Если подключение прошло успешно — MongoDB работает корректно.
Проверка данных на диске:
 ls -lh /mnt/disk_sdb/mongodb/data/
Вы должны увидеть файлы базы данных (например, WiredTiger*, collection-*, index-*).
6. Остановка и обновление
Остановка:
docker-compose down
Обновление версии MongoDB:
- Остановите контейнер (docker-compose down).
- Измените версию в docker-compose.yml(например, наmongo:7.0).
- Запустите заново (docker-compose up -d).
7. Резервное копирование
Для резервного копирования данных MongoDB:
docker exec mongodb mongodump --username=root --password=your_secure_password --out=/backup
docker cp mongodb:/backup /mnt/disk_sdb/mongodb/backup_$(date +%Y-%m-%d)8. Восстановление из резервной копии
docker cp /mnt/disk_sdb/mongodb/backup_2025-09-25 mongodb:/restore
docker exec mongodb mongorestore --username=root --password=your_secure_password /restoreВажно!
- Безопасность: Всегда используйте сложные пароли и ограничивайте доступ к порту 27017(например, с помощьюufwилиiptables).
- Права доступа: Убедитесь, что у пользователя mongodbв контейнере есть права на запись в/mnt/disk_sdb/mongodb/data.
- Мониторинг: Настройте мониторинг дискового пространства на /mnt/disk_sdb.
 
                                
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.