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
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 :
image: nginx: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:
image: mysql: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:
image: mysql:latest
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "True"
volumes:
- /mysql/db/:/var/lib/mysql
ports:
- '3306:3306'
nginx-web-app :
image: nginx: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
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: password
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
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
Posting Komentar