MongoDB (from "humongous") is a scalable, high-performance document-oriented NoSQL database system. Instead of storing data in tables as is done in a "classical" relational database, MongoDB stores structured data as JSON-like documents with dynamic schemas, making integration with certain types of applications easier and faster.
- Based on the super slim tklx/base (Debian GNU/Linux).
- MongoDB installed from official upstream repo.
- Uses tini for zombie reaping and signal forwarding.
- Includes
USER mongodb
to restrict the privileges of mongod. - Includes
VOLUME /data/db
for dbPath persistence. - Includes
EXPOSE 27017
, so standard container linking will make it automatically available to the linked containers.
$ docker run --name some-mongo -d tklx/mongodb
$ docker run --name some-app --link some-mongo:mongo -d app-that-uses-mongo
MongoDB does not require authentication by default, but it can be configured to do so. For more details about the functionality described here, please see the sections in the official documentation which describe authentication and authorization in more detail.
$ docker run --name some-mongo -d tklx/mongodb --auth
$ docker exec -it some-mongo mongo admin
connecting to: admin
> db.createUser({ user: 'some-user', pwd: 'some-pass', roles: [ { role: 'userAdminAnyDatabase', db: 'admin' } ] })
Successfully added user: {
"user" : "some-user",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
$ docker run -it --rm --link some-mongo:mongo tklx/mongodb \
mongo -u some-user -p some-pass --authenticationDatabase admin \
some-mongo/some-db
connecting to: some-mongo/some-db
> db.getName()
some-db
# interactive root terminal
$ docker run --rm -it -u root tklx/mongodb /bin/bash
# mongo client options
$ docker run --rm tklx/mongodb mongo --help
# mongod options
$ docker run --rm tklx/mongodb --help
# while testing
$ docker run --name test-mongo -d tklx/mongodb --smallfiles --noprealloc
The Docker image is built, tested and pushed by CircleCI from source hosted on GitHub.
- Tag:
x.y.z
refers to a release (recommended). - Tag:
latest
refers to the master branch.
Currently on major version zero (0.y.z). Per Semantic Versioning, major version zero is for initial development, and should not be considered stable. Anything may change at any time.
TKLX uses a central issue tracker on GitHub for reporting and tracking of bugs, issues and feature requests.