Docker-Compose

Setup Docker Compose

Docker compose is a tool that simplifies the management of multi-container applications by allowing you to define and run them using a single YAML file. It automates the process of managing several Docker containers simultaneously, making it quicker, easier, and more repeatable compared to manual methods. Docker compose enables you to encapsulate application requirements like storage volumes, environment variables, and port bindings in a YAML file improving developer ergonimics and supporting the reuse of configuration in different environments. It helps in orchestrating and coordinating various services, streamlining development deployment, and management processes.

Understanding Docker Compose

Docker Compose is an essential tool for developers working with Docker, particularly when dealing with multi-container applications. At its core, it uses a single YAML .yml file to define multiple containers and their relationships, so that they can be managed as a single service.

Key Features:

  • Simplification of Multi-container Management: With Docker Compose, you can run and manage multiple containers as a single service, which significantly streamlines development and testing workflows.

  • YAML File Configuration: All the services, networks, and volumes are defined in a YAML file, making the setup and configuration of your application’s environment straightforward and versionable.

  • Automation: It automates the deployment of your application by allowing the definition of all your service dependencies in a single file.

  • Environment Standardization: Docker Compose ensures that your application runs in the same way in every environment, eliminating the "it works on my machine" problem.

Prerequisites:

Make sure you have:

  • Installed the latest version of Docker Compose.

  • A basic understanding of Docker concepts and how Docker works

Update && Upgrade the system

sudo apt-get update -y && sudo apt-get upgrade -y

Install docker compose

sudo apt-get install docker-compose -y

Check the version

docker-compose version

Configuration and example of docker-compose

To set up Docker Compose with a service and a database example, we can create a simple setup with a web application service and a MySQL database service. Here's how you can do it:

Create a project directory and navigate into it:

mkdir docker_project
cd docker_project

Create docker-compose file

Create a Docker Compose file named docker-compose.yml in your project directory. Here's an example of a Docker Compose file that defines a web service using Nginx and a MySQL database service:

vi docker-compose.yml
version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword

Paste the file inside the docker-compose.yaml and save wq! Enter.

Build and run your app with docker-compose.

sudo docker-compose up -d

The -d flag runs the services in detached mode.

Verify the running services and their status:

sudo docker-compose ps

Access the web service: You can access the Nginx web server running on port 80 by opening http://server_ip_address:80 in your web browser.

Access the MySQL database: You can access the MySQL database service by connecting to it using a MySQL client.

Now you can check that mysql_server is running on port 3306 by opening http://server_ip_address:3306 in your browser.

Check the running container

Also if you want to log in to your MySQL database navigate to the terminal and run these commands

docker ps -a

Login MySQL-server

docker exec -it container_ID /bin/bash

Now run these command

mysql -u username -p

How to Push an Image to Docker Hub

Docker Images Pushed in the Docker Hub

First, sign up on Docker Hub.

Go to the docker https://hub.docker.com/

Follow these steps to push an image to Docker Hub:

Log In to Docker Hub:

docker login

Enter your Docker Hub credentials when prompted.

Tag Your Image:

docker tag <local-image> <username>/<repo>:<tag>

Push the Image:

docker push <username>/<repo>:<tag>

Verify the Image on Docker Hub: Go to Docker Hub and ensure the image appears in your repository.

sudo docker login 

Give the GitHub username and Password

check docker images

Push the image with the tag name in the docker_hub

sudo docker tag your_image_name:latest docker_hub_username/new_name_image

Last updated