50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
|
This module builds and runs two containers based upon the [mongo:3.2](https://hub.docker.com/_/mongo/) Docker image. The first _primary_ container starts MongoDB, while the second _initiator_ container initializes the replica set and then terminates.
|
||
|
|
||
|
## Using MongoDB
|
||
|
|
||
|
As mentioned in the [README.md]() file, our Maven build can be used to start a container using either one of these images. The `mongo:3.2` image is used:
|
||
|
|
||
|
$ mvn docker:start
|
||
|
|
||
|
The command leaves the primary container running so that you can use the running MySQL server. For example, you can establish a `bash` shell inside the container (named `mongo1`) by using Docker in another terminal:
|
||
|
|
||
|
$ docker exec -it mongo1 bash
|
||
|
|
||
|
Or you can run integration tests from your IDE, as described in detail in the [README.md]() file.
|
||
|
|
||
|
To stop and remove the `mongo1` container, simply use the following Maven command:
|
||
|
|
||
|
$ mvn docker:stop
|
||
|
|
||
|
or use the following Docker commands:
|
||
|
|
||
|
$ docker stop mongo1
|
||
|
$ docker rm mongo1
|
||
|
|
||
|
## Using Docker directly
|
||
|
|
||
|
Although using the Maven command is far simpler, the Maven commands really just run for the `alt-server` profile really just runs (via the Jolokia Maven plugin) a Docker command to start the container, so it's equivalent to:
|
||
|
|
||
|
$ docker run -it --rm --name mongo mongo:latest --replSet rs0 --oplogSize=2 --enableMajorityReadConcern
|
||
|
|
||
|
This will use the `mongo:3.2` image to start a new container named `mongo`. This can be repeated multiple times to start multiple MongoDB secondary nodes:
|
||
|
|
||
|
$ docker run -it --rm --name mongo1 mongo:latest --replSet rs0 --oplogSize=2 --enableMajorityReadConcern
|
||
|
|
||
|
$ docker run -it --rm --name mongo2 mongo:latest --replSet rs0 --oplogSize=2 --enableMajorityReadConcern
|
||
|
|
||
|
Then, run the initiator container to initialize the replica set by assigning the `mongo` container as primary and the other containers as secondary nodes:
|
||
|
|
||
|
$ docker run -it --rm --name mongoinit --link mongo:mongo --link mongo1:mongo1 --link mongo2:mongo2 -e REPLICASET=rs0 -e debezium/mongo-replicaset-initiator:3.2
|
||
|
|
||
|
Once the replica set is initialized, the `mongoinit` container will complete and be removed.
|
||
|
|
||
|
|
||
|
### Use MongoDB client
|
||
|
|
||
|
The following command can be used to manually start up a Docker container to run the MongoDB command line client:
|
||
|
|
||
|
$ docker run -it --link mongo:mongo --rm mongo:3.2 sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT"'
|
||
|
|
||
|
Note that it must be linked to the Mongo container to which it will connect.
|