Files
mongodb-replset/README.md
N08I40K ab3a808032
All checks were successful
Docker / build (push) Successful in 1m0s
Начальный коммит
2025-03-04 15:30:28 +04:00

92 lines
3.9 KiB
Markdown

# MongoDB ReplicaSet Setup
This repository contains the necessary scripts and configurations to set up a MongoDB ReplicaSet using Docker. The setup
includes initializing the ReplicaSet, creating a database user, and configuring MongoDB to run with authentication and a
key file for secure communication between replica set members.
## Table of Contents
- [Prerequisites](#prerequisites)
- [Configuration](#configuration)
- [Usage](#usage)
- [Scripts](#scripts)
- [Dockerfile](#dockerfile)
## Prerequisites
- Docker installed on your machine.
- A Docker registry to push the built image (optional).
- Environment variables configured for MongoDB setup.
## Configuration
The following environment variables are required for the setup:
| Variable | Type | Description |
|-----------------------------------|--------|---------------------------------------------------------------------|
| `MONGO_DOMAIN` | string | The domain or IP address of the MongoDB instance. |
| `MONGO_PORT` | number | The port on which MongoDB will run. |
| `MONGO_REPLICA_SET_NAME` | string | The name of the MongoDB ReplicaSet. |
| `MONGO_INITDB_DATABASE` | string | The initial database to create. |
| `MONGO_INITDB_ROOT_USERNAME_FILE` | secret | Path to the file containing the root username. |
| `MONGO_INITDB_ROOT_PASSWORD_FILE` | secret | Path to the file containing the root password. |
| `MONGO_PROJECTDB_USERNAME_FILE` | secret | Path to the file containing the project database username. |
| `MONGO_PROJECTDB_PASSWORD_FILE` | secret | Path to the file containing the project database password. |
| `MONGO_KEY_FILE_PATH` | secret | Path to the key file for MongoDB authentication. |
| `MONGO_KEY_FILE_TARGET_PATH` | secret | Target path where the key file will be copied inside the container. |
## Usage
1. **Clone the repository:**
```bash
git clone https://git.n08i40k.ru/n08i40k/mongodb-replset.git
cd mongodb-replset
```
2. **Build the Docker image:**
```bash
docker build -t mongodb-replset .
```
3. **Run the Docker container:**
```bash
docker run -d \
--name mongodb-replset \
-e MONGO_DOMAIN=mongodb.example.tdl \
-e MONGO_PORT=27017 \
-e MONGO_REPLICA_SET_NAME=rs0 \
-e MONGO_INITDB_DATABASE=example \
-e MONGO_INITDB_ROOT_USERNAME_FILE=/run/secrets/db_root_username \
-e MONGO_INITDB_ROOT_PASSWORD_FILE=/run/secrets/db_root_password \
-e MONGO_PROJECTDB_USERNAME_FILE=/run/secrets/db_username \
-e MONGO_PROJECTDB_PASSWORD_FILE=/run/secrets/db_password \
-e MONGO_KEY_FILE_PATH=/run/secrets/db_key_file \
-e MONGO_KEY_FILE_TARGET_PATH=/root/db_key_file \
mongodb-replset
```
## Scripts
### `rs-init.sh`
This script initializes the MongoDB ReplicaSet and creates a user with read-write permissions on the specified database.
### `start.sh`
This script is the entry point for the Docker container. It checks if the ReplicaSet is already initialized and, if not,
initializes it using `rs-init.sh`. It also copies the key file to the specified location and starts the MongoDB instance
with the appropriate configuration.
## Dockerfile
The `Dockerfile` is based on the official MongoDB image and includes the necessary scripts and configurations to set up
a MongoDB ReplicaSet. It sets the working directory, copies the scripts, and defines the entry point and command to
start MongoDB with the required options.
## Contributing
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.