From 5319adeff1979483db905ee4d78b1735c8ab1584 Mon Sep 17 00:00:00 2001 From: rulanugrh Date: Sat, 3 Feb 2024 04:27:44 +0700 Subject: [PATCH] feat: docker volume --- .github/assets/types-of-mounts-volume.webp | Bin 0 -> 14034 bytes basic/08_docker_volume/README.md | 76 +++++++++++++++++++++ basic/08_docker_volume/docker-compose.yml | 35 ++++++++++ 3 files changed, 111 insertions(+) create mode 100644 .github/assets/types-of-mounts-volume.webp create mode 100644 basic/08_docker_volume/README.md create mode 100644 basic/08_docker_volume/docker-compose.yml diff --git a/.github/assets/types-of-mounts-volume.webp b/.github/assets/types-of-mounts-volume.webp new file mode 100644 index 0000000000000000000000000000000000000000..0c8d8d0bd3ccba397751ebd0c7bb826e4c761d35 GIT binary patch literal 14034 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 E09rgmrT_o{ literal 0 HcmV?d00001 diff --git a/basic/08_docker_volume/README.md b/basic/08_docker_volume/README.md new file mode 100644 index 0000000..248457b --- /dev/null +++ b/basic/08_docker_volume/README.md @@ -0,0 +1,76 @@ +## Docker Volume +Kita tahu bahwa docker itu sendiri adalah container tools. Dimana setiap folder yang ada, config-an yang ada itu hanya bisa diakses ketika kita di dalam containernya. Namun docker sendiri telah menyediakan fitur volume. Fitur inilah yang membuat kita bisa meng-export dan melihat perubahan secara realtime dari container ke local server kita. Maka dari itu developer sering menggunakan ini agar suatu saat ketika ada BUG didalam production mereka bisa backup data secara cepat. + +![archi](../../.github/assets/types-of-mounts-volume.webp) + +Namun jika tipe data kalian adalah `persistent-data` kalian sebenarnya bisa mount / binding data ke local kalian dengan `tmpfs`. Namun tipe penyimpanan ini ialah bersifat sementara, ia akan terus bekerja ketika container dalam keadaan running. Namun jika container itu sendiri restart ataupun berhenti maka data nya juga akan hilang + +## Command Volume +Untuk membuat volume sendiri kalian bisa menggunakan +``` +$ docker volume create [NAME_VOLUME] +``` +Setelah kalian buat , kalian tinggal pasang saja ke container yang kalian ingin binding datanya + +``` +$ docker run -dp [PORT_PUBLISH]:[PORT_IMAGE] --name=testing-app --mount source=[NAME_VOLUME],target=[TARGET_DIRECTORY] sample-image +``` +Jadi ketika kalian ingin binding docker volume kalian bisa langsung saja pakai flag `--mount` lalu tambahkan source volume yang sudah kalian buat dan arahkan path yang mau kalian ingin backup. Nah nanti jika kalian inspect containernya maka akan keluar source volume dan target mountnya + +``` +$ docker inspect testing-app + +"Mounts": [ + { + "Type": "volume", + "Name": "myvol2", + "Source": "/var/lib/docker/volumes/myvol2/_data", + "Destination": "/app", + "Driver": "local", + "Mode": "", + "RW": true, + "Propagation": "" + } +], +``` + +## Volume in Compose +Sebenarnya kalian bisa saja setup volume didalam docker compose. Secara otomatis akan dibuat, dan bahkan kalian bisa secara realtime menerima data baru. Misal disini saya punya image `postgres` nah saya ingin data yang didalam postgress ada di folder local saya. Sample confignya kalian bisa lihat disini [docker-compose.yml](./docker-compose.yml). Atau kalian bisa juga configan seperti ini + +```yml +# version untuk saat ini ialah version 3.9 +# untuk installasi kalian bisa jalanin saja script di root folder ini `install.sh` +version: '3.9' +# services define apa saja yang akan dilakukan build +# bahkan sampai pembuatan container dan running juga +services: + # ini nama service bebas mau apa aja asal readable dalam team + db: + # image yang digunakan untuk service db + image: postgres:alpine + + # nama container , sebenarnya biar mudah saja di kelola + # karena secara default docker sudah membuat nama container secara otomatis + container_name: db-app + + # hostname , ini defaultnya kosong , jadi kalian bisa setup + hostname: db + + # env, ini penting apalagi berhubungan dengan statefull data + # setiap image punya env berbeda beda, kalian bisa liat di official docs docker hubnya + environment: + - POSTGRES_USER=bellshade + - POSTGRES_DB=sample_db + - POSTGRES_PASSWORD=bellshade + + # port yang akan dipublish + # tergantung dari image + # setiap image punya port yang berbeda beda + ports: + - 5432:5432 + + volumes: + # path volume dari docker image kalian bisa lihat di official docsnya + # untuk ke local bebas tergantung kalian mau simpan dimana + - ./data/backup:/var/lib/postgresql/data +``` \ No newline at end of file diff --git a/basic/08_docker_volume/docker-compose.yml b/basic/08_docker_volume/docker-compose.yml new file mode 100644 index 0000000..3f36590 --- /dev/null +++ b/basic/08_docker_volume/docker-compose.yml @@ -0,0 +1,35 @@ +# version untuk saat ini ialah version 3.9 +# untuk installasi kalian bisa jalanin saja script di root folder ini `install.sh` +version: '3.9' +# services define apa saja yang akan dilakukan build +# bahkan sampai pembuatan container dan running juga +services: + # ini nama service bebas mau apa aja asal readable dalam team + db: + # image yang digunakan untuk service db + image: postgres:alpine + + # nama container , sebenarnya biar mudah saja di kelola + # karena secara default docker sudah membuat nama container secara otomatis + container_name: db-app + + # hostname , ini defaultnya kosong , jadi kalian bisa setup + hostname: db + + # env, ini penting apalagi berhubungan dengan statefull data + # setiap image punya env berbeda beda, kalian bisa liat di official docs docker hubnya + environment: + - POSTGRES_USER=bellshade + - POSTGRES_DB=sample_db + - POSTGRES_PASSWORD=bellshade + + # port yang akan dipublish + # tergantung dari image + # setiap image punya port yang berbeda beda + ports: + - 5432:5432 + + volumes: + # path volume dari docker image kalian bisa lihat di official docsnya + # untuk ke local bebas tergantung kalian mau simpan dimana + - ./data/backup:/var/lib/postgresql/data \ No newline at end of file