Docker Compose


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.

Source: Docker Compose

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 /mnt/e/docker/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 docker-compose-nginx.yml up



Untuk Stop proses : Ctrl + c          

Untuk run dan stop di background jalankan :

docker-compose -f docker-compose-nginx.yml up -d


Untuk Stop:

docker-compose -f docker-compose-nginx.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 /mnt/e/docker/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_PASSWORD: password    

  wordpress:

    depends_on:

        - db

    imagewordpress:latest

    ports:

        - "8000:80"

    restartalways

    environment:

        WORDPRESS_DB_HOSTdb:3306

        WORDPRESS_DB_USERwordpress_user

        WORDPRESS_DB_PASSWORD: password

        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.




Next Post Previous Post
No Comment
Add Comment
comment url