Day 18 Task: Docker Compose

Day 18 Task: Docker Compose

Docker Compose is used to run multiple containers as a single service. For example, suppose you had an application which required NGNIX and MySQL, you could create one file which would start both the containers as a service without the need to start each one separately.

  • Docker Compose is a tool that was developed to help define and share multi-container applications.

  • With Compose, we can create a YAML file to define the services and with a single command, can spin everything up or tear it all down.

    YAML

  • YAML is a data serialization language that is often used for writing configuration files. Depending on whom you ask, YAML stands for yet another markup language or YAML ain’t markup language (a recursive acronym), which emphasizes that YAML is for data, not documents.

  • YAML is a popular programming language because it is human-readable and easy to understand.

  • YAML files use a .yml or .yaml extension.

    Docker Compose ─ Installation

  • Step 1 − Download the necessary files from github

  •   curl -L "https://github.com/docker/compose/releases/download/1.10.0-rc2/dockercompose
         -$(uname -s) -$(uname -m)" -o /home/demo/docker-compose
    

    Step 2 − Next, we need to provide execute privileges to the downloaded Docker Compose file, using the following command −

      chmod +x /home/demo/docker-compose
    
      docker-compose version
    

    Creating Docker-Compose File

      sudo vim docker-compose.yml
    
      web:
       build: .
       links:
        - "database_default"
       ports:
        - "8000:80"
       volumes:
        - ".:/app:rw"
        - "./data:/data:rw"
       command: python manage.py runserver 0.0.0.0:80
       env_file: .env-local
    
      database_default:
       image: postgres:13.5-alpine
       environment:
         POSTGRES_DB: "db"
         POSTGRES_HOST_AUTH_METHOD: "trust"
         SERVICE_MANAGER: "fsm-postgres"
       volumes:
        - ".:/app:rw"
    
      Another File------
      vi docker-compose.yml
    
      version : "3.3"
      services:
        web:
          image: nginx:latest
          ports:
            - "80:80"
        db:
          image: mysql
          ports:
            - "3306:3306"
          environment:
            - "MYSQL_ROOT_PASSWORD=test@123"
    
    • Pull a pre-existing Docker image from a public repository (e.g. Docker Hub) and run it on your local machine. Run the container as a non-root user (Hint- Use usermod command to give user permission to docker). Make sure you reboot instance after giving permission to user.

      No alt text provided for this image

  • Inspect the container's running processes and exposed ports using the docker inspect command.

No alt text provided for this image

No alt text provided for this image

  • Use the docker logs command to view the container's log output.

No alt text provided for this image

  • Use the docker stop and docker start commands to stop and start the container.

No alt text provided for this image

No alt text provided for this image

  • Use the docker rm command to remove the container when you're done.

No alt text provided for this image