• Mail us
  • Book a Meeting
  • Call us
  • Chat with us

DevOps

Deploying Multi Container Applications Using Docker Compose


Overview

With Docker Compose, you can easily create and control multi container Docker applications using a YAML configuration file. This is extremely helpful for applications with multiple interdependent services, such as a web server and database operating together or a caching service functioning seamlessly.

Benefits of Using Docker Compose

  • Enhanced Multi Container Management: You can manage several containers using a single config file.

  • Improved Networking: A dedicated network for all services is automatically set up.

  • Automated Service Dependency Management: Dependencies between services are defined to ensure the services are started in the correct order.

  • Unified Environments: The configuration for development, testing and production processes is consistent.

Installing Docker Compose

Ensure Docker is installed on your system before proceeding with Docker Compose. You can get your copy using the official documentation:

# Linux and Mac  sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  sudo chmod +x /usr/local/bin/docker-compose  # Verify Installation  docker-compose --version  

For docker-compose.yml There are two parts for writing and using docker-compose files.

 version: '3.8'  services:    web:      image: nginx:latest      ports:        - "8080:80"      volumes:        - ./html:/usr/share/nginx/html      depends_on:        - db    db:      image: mysql:5.7      environment:        MYSQL_ROOT_PASSWORD: rootpassword        MYSQL_DATABASE: mydatabase        MYSQL_USER: user        MYSQL_PASSWORD: password      volumes:        - db_data:/var/lib/mysql  volumes:    db_data:

Running and Managing Containers with Docker Compose

1. Start Containers

To turn on/off any services mentioned in the docker file, use the commands below:

docker-compose up -d

You will notice I added ‘-d’ flag which runs in detached mode (in the background).

 

2. Halting Containers

To halt all containers that are currently running, execute the following command on the command line:

docker-compose down

 

3. Fetch logs

To obtain logs for all services that are running, execute the command:

docker-compose logs -f

 

4. Service Reboot

To restart a particular service, for example, web, execute the command below:

docker-compose restart web

 

5. Service Scaling

To scale services, for instance, having several instances for the web service running:

docker-compose up --scale web=3 -d

Setting up networks and volumes

You can define custom networks as opposed to the auto-created default network that docker-compose creates:

networks: my_network: driver: bridgeservices: app: networks: - my_network

 

Use named volumes for persistent data storage as shown below:

volumes: my_data: driver: local

Variables and environment files

For sensitive data use an .env file as illustrated below:

MYSQL_ROOT_PASSWORD=rootpassword MYSQL_DATABASE=mydatabase 

And use it in docker-compose.yml like so:

environment:   MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

Final Remarks

The use of Docker Compose makes managing multi container applications easier through reusable, automated configurations. Deployment is also easier, with improved scaling across various environments.

Ready to transform your business with our technology solutions?   Contact Us today to Leverage Our DevOps Expertise. 

Share

facebook
LinkedIn
Twitter
Mail
Devops

Related Center Of Excellence