DEV Community

Cover image for Dockerizing stuff you need
Constantine
Constantine

Posted on • Edited on

Dockerizing stuff you need

Photo by Dominik Lückmann on Unsplash

When we develop something we all need to use some services such as PostgreSQL, Redis, RabbitMQ and many-many others. But I don't like the idea of installing each and every one of them on my local machine. So the idea of dockerizing everything looks very appealing.

In this article I'll show how to deploy three mentioned services locally with docker. And, as a bonus, easy way of configuring and monitoring our containers park via Portainer.

Bonus first

Portainer is such a great and powerful tool that I just love! Let's set it up and ease our next steps.

You need to create a volume with a simple terminal command

$ docker volume create portainer_data
Enter fullscreen mode Exit fullscreen mode

and deploy Portainer

$ docker run -d -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Enter fullscreen mode Exit fullscreen mode

All of this you can find in deploy section on the official documentation.

Then finish the initial setup. Again, everything is described in the docs

After it's done you can navigate to localhost:9443 and see the Portainer dashboard.

Now you can monitor your containers, attach to them, check logs, see and remove unused images and volumes, and do everything you could do from the terminal. But you don't need to google or remember those lengthy commands.

Allright, let's go!

PostgreSQL

As we need to have a persistent storage for our DB let's create a volume. Go to "Volumes" tab in Portainer and push that "Add volume" button. Give it a name, e.g. pg_data and hit "Create the volume".

Then go to the "Containers" tab and smash the "Add container" button.
Set Name: pg, Image: postgres:latest, on "Manual network port publishing" click plus sign and enter 5432 for both "host" and "container".

Next in the "Advanced container settings" section leave everything as is on "Command and logging tab". Move to the "Volumes" tab, hit plus sign and map /var/lib/postgresql/data to our pg_data volume. After that to the "Env" tab. Set POSTGRES_PASSWORD to, well, root password for the database. Let's say it will be password. I also like to set unless stopped on the "Restart policy" tab. Now we are ready to smash that "Deploy the container" button above our advanced settings section.

Here is an example screenshot:

Postgres create container

Where do I get those variables and values? Docker Hub! Just open the service page and it's all there.

Also you can do everything by hand, but I don't remember how to create a volume with a custom name and map that to a container.

And we can now connect to Postgres via localhost:5432 as postgres user and password password!

Redis

If Postgres was quite a handful, Redis is much easier. The steps are similar.

  1. Create volume
  2. Create container
    • from redis:latest
    • with port binding 6379:6379;
    • map created volume to /data;
    • and, optionally, set restart policy.

Boom, done!

RabbitMQ

Next in line is Rabbit. It's so easy I don't even want to repeat 😀

  1. Create volume
  2. Create container
    • from rabbitmq:3-management
    • with port bindings 5672:5672 and 15672:15672 for management;
    • map created volume to /var/lib/rabbitmq;
    • and, if you want, set restart policy.

And again, done! 🎉

Summary

When using docker you can free yourself from the need to install every service you need. Not to mention if you need different versions of the same thing.

Hope this will ease your struggles with containers (if any) and you'll be able to focus on writing quality code!

Top comments (1)

Collapse
 
mantassidabras profile image
MantasSidabras

This tool is excellent! I don't use docker daily, so I tend to forget all the docker cli commands. With this I won't have to bother, when I want to quickly setup db or redis :)