Pada Sesi 1 dan Sesi 2 kita sudah belajar bagaimana dockerize aplikasi golang hello world,running aplikasi dan mencoba push image ke docker hub registry.
Selanjut nya pada Sesi 3 ini kita coba praktek Run Docker image Database.
Database Docker Image Mysql/MariaDB
MariaDB Official Image sudah menyiapkan image docker Mariadb yang bisa langsung di pakai dan di jalankan tanpa perlu repot kita menyiapkan dari install server baru, install depedencies, dll.
untuk mendownload image yang sudah ada di Docker Hub Registry dapat menggunakan perintah docker pull
$ docker pull mariadb
jika sudah terdownload image mariadb, kita akan merunning sebagai container. namun kita sebaiknya melihat dokumentasi How to use this image menggunakan environment variable apa saja yang tersedia.
$ docker run -itd --name mariadb-1 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 mariadb
container yang di jalankan di beri nama mariadb-1 dan menggunakan environment variable password diperbolehkan kosong dan di expose ke port default mysql/mariadb 3306. jika saat run container terjadi error tidak berjalan, coba selidiki dengan melihat dari container lognya.
$ docker logs mariadb-1
mari kita coba connect ke database mariadb, di sini saya menggunakan Aplikasi Heidisql, temen2 bisa juga menggunakan Mysql Workbench atau yang lain nya.
oke sukses connect ke database nya.
Ada satu hal yang perlu di ingat bahwa jika kita hapus container mariadb-1 maka database yang sudah kita buat tadi akan hilang. gak percaya? coba aja delete container mariadb-1 dan create container ulang lagi dengan nama yang sama mariadb-1.
$ docker container rm mariadb-1
$ docker run -itd --name mariadb-1 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 mariadb
akan jadi masalah besar jika database sudah banyak dibuat terhapus. Bagaimana cara nya jika container terhapus namun database tidak terhapus?? jawaban nya yaitu menggunakan Docker Volume.
Docker Volume/Storage Bind Mounts Save Data dari Container ke Host
untuk menggunakan Docker Volume kita hanya menambahkan flag -v.
buat dahulu folder/path tempat menyimpan data container. Di sini saya buat di WSL Ubuntu Windows dengan nama folder storedata-mysql.
$ docker run -itd --name mariadb-1 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -v /home/sdb/storedata-mysql:/var/lib/mysql -p 3306:3306 mariadb
pada folder storedata-mysql akan terisi file dan folder seperti ini
coba lagi create database dan table, selanjutnya coba remove container dan create running kembali container dengan nama yang berbeda namun di arahkan ke docker volume storedata-mysql.
$ docker container stop mariadb-1
$ docker container rm mariadb-1
$ docker run -itd --name mariadb-2 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -v /home/sdb/storedata-mysql:/var/lib/mysql -p 3306:3306 mariadb
connect kembali menggunakan Heidisql.
database dan table masih tersedia dengan aman.
SSH Remote Ke Container
Cara untuk remote ke container yaitu ketahui container id atau nama container terlebih dahulu dan untuk mengakses nya menggunakan command docker exec.
$ docker container ls
$ docker exec -it 4b90 sh