Развёртывания 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
.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.