| :title: Running a Redis service |
| :description: Installing and running an redis service |
| :keywords: docker, example, package installation, networking, redis |
| |
| .. _running_redis_service: |
| |
| Redis Service |
| ============= |
| |
| .. include:: example_header.inc |
| |
| Very simple, no frills, Redis service attached to a web application using a link. |
| |
| Create a docker container for Redis |
| ----------------------------------- |
| |
| Firstly, we create a ``Dockerfile`` for our new Redis image. |
| |
| .. code-block:: bash |
| |
| FROM ubuntu:12.10 |
| RUN apt-get update |
| RUN apt-get -y install redis-server |
| EXPOSE 6379 |
| ENTRYPOINT ["/usr/bin/redis-server"] |
| |
| Next we build an image from our ``Dockerfile``. Replace ``<your username>`` |
| with your own user name. |
| |
| .. code-block:: bash |
| |
| sudo docker build -t <your username>/redis |
| |
| Run the service |
| --------------- |
| |
| Use the image we've just created and name your container ``redis``. |
| |
| Running the service with ``-d`` runs the container in detached mode, leaving the |
| container running in the background. |
| |
| Importantly, we're not exposing any ports on our container. Instead we're going to |
| use a container link to provide access to our Redis database. |
| |
| .. code-block:: bash |
| |
| sudo docker run -name redis -d <your username>/redis |
| |
| Create your web application container |
| ------------------------------------- |
| |
| Next we can create a container for our application. We're going to use the ``-link`` |
| flag to create a link to the ``redis`` container we've just created with an alias of |
| ``db``. This will create a secure tunnel to the ``redis`` container and expose the |
| Redis instance running inside that container to only this container. |
| |
| .. code-block:: bash |
| |
| sudo docker run -link redis:db -i -t ubuntu:12.10 /bin/bash |
| |
| Once inside our freshly created container we need to install Redis to get the |
| ``redis-cli`` binary to test our connection. |
| |
| .. code-block:: bash |
| |
| apt-get update |
| apt-get -y install redis-server |
| service redis-server stop |
| |
| Now we can test the connection. Firstly, let's look at the available environmental |
| variables in our web application container. We can use these to get the IP and port |
| of our ``redis`` container. |
| |
| .. code-block:: bash |
| |
| env |
| . . . |
| DB_NAME=/violet_wolf/db |
| DB_PORT_6379_TCP_PORT=6379 |
| DB_PORT=tcp://172.17.0.33:6379 |
| DB_PORT_6379_TCP=tcp://172.17.0.33:6379 |
| DB_PORT_6379_TCP_ADDR=172.17.0.33 |
| DB_PORT_6379_TCP_PROTO=tcp |
| |
| We can see that we've got a small list of environmental varaibles prefixed with ``DB``. |
| The ``DB`` comes from the link alias specified when we launched the container. Let's use |
| the ``DB_PORT_6379_TCP_ADDR`` variable to connect to our Redis container. |
| |
| .. code-block:: bash |
| |
| redis-cli -h $DB_PORT_6379_TCP_ADDR |
| redis 172.17.0.33:6379> |
| redis 172.17.0.33:6379> set docker awesome |
| OK |
| redis 172.17.0.33:6379> get docker |
| "awesome" |
| redis 172.17.0.33:6379> exit |
| |
| We could easily use this or other environment variables in our web application to make a |
| connection to our ``redis`` container. |
| |