Harshit
Harshit

Reputation: 1565

How should I create Dockerfile to run multiple services through docker-compose?

I'm new to Docker. I wanted to create a Dockerfile to start services like RabbitMQ, ftp server and elastic search. But I'm not able to think from where should I start ?

I have asked a similar question here : How should I create a Dockerfile to run more than one services in one instance?

There I got to know, to create different containers : one for rabbitmq, one for ftp server and other for elasticsearch and run them using docker-compose file. There you'll find my created Dockerfile code.

It will be great if someone can help me out with this thing. Thanks!

Upvotes: 2

Views: 3127

Answers (1)

Anoop
Anoop

Reputation: 1495

They are correct. Each container & by extension, each image should be responsible for one concern & that is typically mapped to a single process. So if you need to run more than one thing (or more than one process, generally speaking, not strictly) then you most probably require to build separate images. One of the easiest & recommended ways of creating an image is writing a Dockerfile. This is expected to be an extremely simple process and most of it will be a copy paste of the same commands you would have used to install that component.

One you write the Dockerfile's for each service, you must build them using docker build command, which will result in the images.

When you run an image you get what is known as a container. Think of it roughly like an iso file is the image & the actual vm or running machine is the container.

Now you can use docker-compose to orchestrate how these various containers so they can communicate (or be isolated from) with each other. A docker-compose.yml file is a plain text file in the yaml format that describes the relationship between the different components within the app. Apps can be made up of several services - like webserver, appserver, searchengine, database server, cache engine etc etc. Each of these is a service and runs as a container, but it is also not necessary to run everything as a container. Some can remain running in the traditional way, on VM's or on bare metal servers.

I'll check your other post and add if there is anything needed. But I hope this helps you get started at least.

Upvotes: 3

Related Questions