1
0
mirror of https://github.com/moby/moby.git synced 2025-12-07 19:42:23 +03:00
Files
moby/docs/sources/examples/mongodb.rst
James Harrison Fisher 64dd77fa0e Add missing port NAT configuration
Missing port translation causes last line to fail

Docker-DCO-1.1-Signed-off-by: James Fisher <jameshfisher@gmail.com> (github: jameshfisher)
2014-03-27 23:02:44 +00:00

2.9 KiB
Raw Blame History

title
Building a Docker Image with MongoDB
description
How to build a Docker image with MongoDB pre-installed
keywords
docker, example, package installation, networking, mongodb

Building an Image with MongoDB

The goal of this example is to show how you can build your own Docker images with MongoDB pre-installed. We will do that by constructing a Dockerfile that downloads a base image, adds an apt source and installs the database software on Ubuntu.

Creating a Dockerfile

Create an empty file called Dockerfile:

touch Dockerfile

Next, define the parent image you want to use to build your own image on top of. Here, well use Ubuntu (tag: latest) available on the docker index:

FROM    ubuntu:latest

Since we want to be running the latest version of MongoDB we'll need to add the 10gen repo to our apt sources list.

# Add 10gen official apt source to the sources list
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list

Then, we don't want Ubuntu to complain about init not being available so we'll divert /sbin/initctl to /bin/true so it thinks everything is working.

# Hack for initctl not being available in Ubuntu
RUN dpkg-divert --local --rename --add /sbin/initctl
RUN ln -sf /bin/true /sbin/initctl

Afterwards we'll be able to update our apt repositories and install MongoDB

# Install MongoDB
RUN apt-get update
RUN apt-get install mongodb-10gen

To run MongoDB we'll have to create the default data directory (because we want it to run without needing to provide a special configuration file)

# Create the MongoDB data directory
RUN mkdir -p /data/db

Finally, we'll expose the standard port that MongoDB runs on, 27107, as well as define an ENTRYPOINT instruction for the container.

EXPOSE 27017
ENTRYPOINT ["usr/bin/mongod"]

Now, lets build the image which will go through the Dockerfile we made and run all of the commands.

sudo docker build -t <yourname>/mongodb .

Now you should be able to run mongod as a daemon and be able to connect on the local port!

# Regular style
MONGO_ID=$(sudo docker run -P -d <yourname>/mongodb)

# Lean and mean
MONGO_ID=$(sudo docker run -P -d <yourname>/mongodb --noprealloc --smallfiles)

# Check the logs out
sudo docker logs $MONGO_ID

# Connect and play around
mongo --port <port you get from `docker ps`>

Sweet!