Tugas - 12 Run Multiple Container Menggunakan Docker Compose

 Run Multiple Container Menggunakan Docker Compose

Apa Itu Docker Compose

 

Docker Compose adalah sebuah tool untuk mendefinisikan dan menjalankan multi-container Docker applications jadi Docker compose berfungsi untuk menjalankan container docker secara bersamaan.  Dengan menggunakan compose, kita cukup menggunakan satu YAML file untuk melakukan konfigurasi multi-container Docker applications. Kemudian dengan menggunakan single command line, kita bisa membuat dan menjalankan semua services yang sudah kita definisikan di YAML file. Docker compose bisa dijalankan di semua environment: production, staging, testing, development.

  

Mengapa Docker Compose 

1.       Melakukan konfigurasi relationship antar containers. 

2.       Menyimpan docker container run setting pada satu file yang mudah untuk dibaca dan dipahami.

3.       Memudahkan kita untuk menjalankan multi applications dengan menggunakan satu command                line.  

4.       Sebagaimana yang kita ketahui bersama untuk menjalankan docker container kita harus                           menggunakan docker CLI, misalkan:

  

A.      Menjalankan nginx dengan dengan bind mounting volume

  docker container run -d --name nginx2 -p 80:80 -v /mnt/e/docker/nginx-web-         app:/usr/share/nginx/html nginx-web-app


B.      Menjalankan MYSQL container dengan custom volume

    docker container run -d --name mysql-db -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v mysql-        db:/var/lib/mysql mysql


5.       Dengan menggunakan docker compose, kita cukup menjalan satu command line sederhana:                  docker-compose up

 

6.       Memudahkan kita untuk menjalankan multi containers.

 

Bagaimana Menggunakan Docker Compose

Pertama kita perlu mendefinisikan dan build application image dengan menggunakan Dockerfile atau pull image dari Docker Hub. Lalu setelah itu definisikan semua application images (services) pada satu YAML file, secara default nama file nya adalah docker-compose.yml. dan terakhir Jalankan semua applications dengan menggunakan docker-compose up atau docker-compose up -d untuk menjalankan di belakang layar.


Detail Mengenai docker-compose.yml File

1.       Ketika bisa menjalankan banyak docker container dalam satu YAML file.

2.       Contoh YAML file    

         version"3.7"

        services

            ...

        volumes

            ...

        networks

            ...

-          services untuk melakukan konfigurasi docker container

-          volumes untuk mendefinisikan docker volume

-          networks untuk mendifiniskan docker network

Untuk Saat ini, kita akan lebih memfokuskan pemahaman kita ke service terlebih dahulu


        version"3.7"

            services

            service_name_1 :

                image

                ports

                environment

                volumes

                command

 

            service_name_2 :

                image

                ports

                environment

                volumes

                command

 

            volumes

                ...

            networks

                ...

a.       version, versi dari docker compose YAML file, gunakan versi yang paling latest atau yang                  sesuai  dengan current project.

b.      service_name_1, nama service atau aplikasi yang deskriptive, pada docker network akan menjadi          DNS name

c.       image, merupakan Image (lengkap dengan veri dan tag) dari aplikasi yang akan dijalankan

d.      ports, sama seperti opsi -p ketika kita menjalankan docker container

e.      command, digunakan untuk replace CMD command yang didefiniskan di docker image                         (Dockerfile)

f.        environment, Optional sama dengan opsi -e ketika kita menjalankan docker container

g.       volumes, Optional sama dengan opsi -v ketika kita menjalankan docker container


Untuk lebih detail mengenai versi dan referensi YAML file, bisa mengunjungi halaman ini:  Compose File.

Contoh docker-compose.yml File

docker-compose.yml harus berada pada folder yang sama ketika menjalankan docker-compose command.  Secara default docker-compose command membutuhkan docker-compose.yml untuk menjalankannya. Kita bisa membuat file yang berbeda misalkan docker-compose-app.yml, kemudian untuk menjalankanya kita menggunakan opsi -f:

 docker-compose up -f docker-compose-app.yml


Docker Compose Nginx

Dibawah ini adalah docker CLI untuk menjalankan nginx

docker container run -d --name nginx2 -p 80:80 -v /C/Users/ASUS/nginx-web-app:/usr/share/nginx/html nginx-web-app 

 

Docker compose YAML file, dengan nama docker-compose-nginx.yml.

        version"3.7"

        services

        nginx-web-app :

            imagenginx:latest

            ports

                - 80:80

            volumes

                - /mnt/e/docker/nginx-web-app:/usr/share/nginx/html


 Untuk run dan stop a. Run:


        docker-compose -f dc_mysql.yml up




Stop: Ctrl + c ,

 Untuk run dan stop di background jalankan:


            docker-compose -f dc_mysql.yml up -d

dan untuk menghentikan docker-compose -f docker-compose-mysql.yml down –v

 




Untuk melihat docker container yang running 

docker ps




Docker Compose Mysql

Dibawah ini adalah docker CLI untuk menjalankan mysql

docker container run -d --name mysql-db -e MYSQL_ALLOW_EMPTY_PASSWORD=True –v /mnt/e/docker/database/mysql:/var/lib/mysql mysql


Docker compose YAML file, dengan nama dc_mysql.yml

    version"3.7"

    services

        mysql:

            imagemysql:latest

            environment

                MYSQL_ALLOW_EMPTY_PASSWORD"True"

            volumes

                - /mysql/db/:/var/lib/mysql

            ports

                - '3306:3306'

Untuk run dan stop a. Run:

    docker-compose -f dc_mysql.yml up


Stop: Ctrl + c , Untuk run dan stop di background jalankan:

docker-compose -f dc_mysql.yml up -d


dan untuk menghentikan docker-compose -f docker-compose-mysql.yml down –v 

Untuk melihat docker container yang running docker ps





Docker Compose Nginx dan Mysql

Dibawah ini adalah docker CLI untuk menjalankan nginx dan mysql

 

Nginx

docker container run -d --name nginx2 -p 80:80 -v /C/Users/ASUS/nginx-web-app:/usr/share/nginx/html nginx-web-app


Mysql

docker container run -d --name mysql-db -e MYSQL_ALLOW_EMPTY_PASSWORD=True –v /mnt/e/docker/database/mysql:/var/lib/mysql mysql


lalu buat docker compose YAML file, dengan nama docker-compose.yml Untuk run dan stop di background

        version"3.7"

        services

           mysql:

            imagemysql:latest

            environment

                MYSQL_ALLOW_EMPTY_PASSWORD"True"

            volumes

                - /mysql/db/:/var/lib/mysql

            ports

                - '3306:3306'

        nginx-web-app :

            imagenginx:latest

            ports

                - 80:80

            volumes

                - /mnt/e/docker/nginx-web-app:/usr/share/nginx/html


Untuk menjalankannya cukup dengan perintah :

docker-compose up -d



Karena nama file nya docker-compose.yml, jadi kita tidak perlu menambahkan opsi -f ketika menjalankan dock-compose command. Untuk melihat docker container yang running

docker ps




Untuk menghentikannya dengan perintah


docker-compose down -v






Docker Compose – Wordpress

1.       Buat folder mywordpress

 2.       Buat file docker-compose.yml di dalam folder mywordpress

          version"3.9"    

       services:

          db:

        imagemysql:5.7

        volumes:

            - db_data:/var/lib/mysql

        restartalways

        environment:

            MYSQL_ROOT_PASSWORDsomewordpress

            MYSQL_DATABASEwordpress

            MYSQL_USERwordpress_user

            MYSQL_PASSWORDpassword    

      wordpress:

        depends_on:

            - db

        imagewordpress:latest

        ports:

            - "8000:80"

        restartalways

        environment:

            WORDPRESS_DB_HOSTdb:3306

            WORDPRESS_DB_USERwordpress_user

            WORDPRESS_DB_PASSWORDpassword

            WORDPRESS_DB_NAMEwordpress

    volumes:

      db_data: {}


3.       Jalankan perintah

docker-compose up -d




lakukan pengecekan terkait container yang sedang berjalan menggunakan

Docker ps



Buka localhost:8000 pada browser untuk melakukan setup pada wordpress








Setelah selesai kamu bisa mengakses website wordpress yang telah dibuat cukup dengan akses melalui browser pada alamat 127.0.0.1:8000




Perintah docker-compose down menghapus wadah dan jaringan default, tetapi mempertahankan database WordPress Anda. Perintah tersebut docker-compose down –volumes menghapus container, jaringan default, dan database WordPress.

 

Komentar