Apa yang bisa kami bantu?

A. Pendahuluan.

Docker merupakan platform populer yang memungkinkan pengembang untuk membangun, menjalankan, dan mendistribusikan aplikasi di dalam container. Dengan menggunakan Docker, pengelolaan aplikasi menjadi lebih ringan, fleksibel, dan konsisten di berbagai lingkungan sistem operasi.

 

Pada artikel kali ini akan membahas migrasi project yang terinstall container docker ke server lain dengan menggunakan Docker Hub.  Docker Hub adalah layanan registri berbasis cloud yang memungkinkan pengembang untuk menyimpan, berbagi, dan mendistribusikan image container.

 

B. Persiapan.

Dalam artikel kali ini menggunakan project Wordpress yang di install pada Docker, pastikan telah menginstall docker pada kedua server sebelum melanjutkan ke selanjutnya.

Cara Install Docker Pada Linux Ubuntu dan Windows OS

 

Untuk arsitektur kurang lebih seperti berikut:

 

Gambar 1. Arsitektur Migrasi Layanan.

 

Note: Panduan ini menggunakan anonymous volume yang otomatis dibuat oleh instruksi VOLUME di Dockerfile image resmi. Karena docker commit tidak menangkap data volume (baik anonymous, named, maupun bind mount), maka diperlukan langkah backup ke direktori /backup/ yang berada di writable layer container.

 

 

1. Persiapan Project.

Langkah awal membuat project website wordpress sederhana pada docker dengan mengikuti langkah berikut:

 

a. Install Wordpress dan Database pada Docker.

Pada langkah ini menginstall Wordpress versi terbaru dan menggunakan database MariaDB versi terbaru dengan menggunakan official docker image.

 

Buat docker network untuk project.

sudo docker network create wp-network

 

Setelah itu install Database dan Wordpress.

 

#Install MariaDB
sudo docker run -d \
  --name mariadb \
  --network wp-network \
  -e MYSQL_ROOT_PASSWORD=r00tPassw0rd \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wpuser \
  -e MYSQL_PASSWORD=wpPassw0rd \
  mariadb:latest

 

#Install Wordpress
sudo docker run -d \
  --name wordpress \
  --network wp-network \
  -e WORDPRESS_DB_HOST=mariadb \
  -e WORDPRESS_DB_USER=wpuser \
  -e WORDPRESS_DB_PASSWORD=wpPassw0rd \
  -e WORDPRESS_DB_NAME=wordpress \
  -p 8080:80 \
  wordpress:latest

Note: Pada konfigurasi diatas, sesuaikan untuk username dan password yang digunakan pada masing-masing service.

 

b. Verifikasi.

Setelah itu cek list container yang berjalan.

sudo docker ps -a
Gambar 2. List Container Docker.

 

Akses wordpress melalui website, karena menggunakan port 8080 maka untuk akses dapat seperti berikut ip_server:8080

Gambar 3. Dashboard Website Server Asal.

Selamat set up awal project telah selesai dan dapat melanjutkan ke tahap selanjutnya.

 

2. Login Docker Hub di Server.

Dikarenakan langkah migrasi memanfaatkan Docker Hub, maka pastikan telah memiliki akun Docker Hub. Jika belum, dapat registrasi terlebih dahulu pada laman https://hub.docker.com/

 

Setelah memilik akun dan dapat login di laman Docker Hub, selanjutnya dapat login ke masing-masing server agar dapat terhubung ke Docker Hub.

sudo docker login

 

Nantinya teradpat code yang dapat di inputkan pada url verifikasi, akses url yang tersedia saat menjalankan command diatas dan inputkan kode. Setelah berhasil, akan terdapat informasi bahwa login telah berhasil.

 

Gambar 4. Login Docker Hub di Server Asal.

 

Gambar 5. Verifikasi Token Login Docker Hub.

 

C. Backup Data di Server Lama.

Setelah melakukan setup awal, mari melanjutkan ke tahap selanjutnya yaitu melakukan backup data di server lama.

 

1. Melakukan Backup Container.

Lakukan bacup data kedua service pada container dengan menjalankan comamnd dibawah.

 

a. Backup Database.

 

#Membuat Folder Backup di Container
sudo docker exec mariadb mkdir -p /backup
 
#Dump Backup Database
sudo  docker exec mariadb sh -c \
  'mariadb-dump -u root -passworddb wordpress > /backup/wordpress.sql'
 
#Verifikasi backup database
sudo  docker exec mariadb ls -la /backup/html/

 

Gambar 6. Data Backup Database Server Asal.

 

b. Backup Wordpress.

 

#Membuat Folder Backup di Container
sudo docker exec wordpress mkdir -p /backup
 
#Backup Data Wordpress
sudo docker exec wordpress sh -c \
  'cp -a /var/www/html/. /backup/html/'
 
#Verifikasi Backup Wordpress
sudo docker exec wordpress ls -la /backup/html/

 

Gambar 7. Datab Backup Wordpress Server Asal.

 

2. Commit Container & Push ke Docker Hub.

Setelah melakukan backup data, dapat melakukan commit ke docker image dan push image backup ke Docker Hub.

 

Sebelum melakukan commit dan push, dapat melakukan stop container database dan wordpress terlebih dahulu untuk memastikan konsistensi data.

sudo docker stop wordpress mariadb

 

a. Commit Container.

 

#Commit Database
sudo docker commit mariadb userdockerhub/wp-db-migration:v1
 
#Commit Wordpress
sudo docker commit wordpress userdockerhub/wp-app-migration:v1

 

Lalukan verifikasi list image hasil commint.

sudo docker images | grep migration

 

Gambar 8. Commit Image ke Lokal Docker Server Asal.

 

b. Push Image ke Docker Hub.

Lakukan push image ke Docker Hub.


#push database
sudo docker push userdockerhub/wp-db-migration:v1
 
#push wordpress
sudo docker push userdockerhub/wp-app-migration:v1

 

Gambar 9. Push Image ke Docker Hub.

 

3. Verifikasi List Image di Docker Hub.

Lakukan verifikasi list image pada repository di portal Docker Hub.

Gambar 10. Lista Image Repository Docker Hub.

Terlihat pada list image telah berhasil terupload, selanjutnya dapat melakukan restore pada server baru.

 

D. Restore Data di Server Baru.

Setelah melakukan backup data di server lama dan melakukan upload image ke Docker Hub, selanjutnya melakukan pull dan restore data di server baru dengan mengikuti langkah berikut.

 

1. Pull Image & Deploy.

Lakukan pulll image yang telah di upload pada Docker Hub di server baru.

#pull image database
sudo docker pull userdockerhub/wp-db-migration:v1
Gambar 11. Pull Image Databse di Server Tujuan.

 

#pull image wordpress
sudo docker pull userdockerhub/wp-app-migration:v1
Gambar 12. Pull Image Wordpress di Server Tujuan.

 

#verifikasi image
sudo docker images | grep migration
Gambar 13. List Image Docker di Server Tujuan.

Terlihat pada capture image telah berhasil terdownload di server baru, selanjutkan melakukan restore data.

 

2. Restore Data.

Sebelum menjalanka docker dari image yang telah di download, dapat membuat network untuk container terlebih dahulu.

sudo docker network create wp-network

 

Jalankan container Database dan Wordpress.

 

a. Menjalankan dan Restore data container Database.

 

#container-db
sudo docker run -d \
  --name mariadb \
  --network wp-network \
  userdockerhub/wp-db-migration:v1
 
#restoredb
docker exec mariadb sh -c \
  'mariadb -u root -passworddb wordpress < /backup/wordpress.sql'

 

b. Menjalankan dan Restore data container Wordpress.

 

#containerwp
docker run -d \
  --name wordpress \
  --network wp-network \
  -p 8080:80 \
  userdockerhub/wp-app-migration:v1
 
#restore-wp
docker exec wordpress sh -c \
  'cp -a /backup/html/. /var/www/html/'

 

Lakukan penyenyuaian permission dan site url Wordpress.

 

#Change ownership
docker exec wordpress sh -c \
  'chown -R www-data:www-data /var/www/html'
 
#Penyesuaian Site Url
docker exec mariadb sh -c \
  "mariadb -u root -pr00tP@ssw0rd -e \
  \"UPDATE wordpress.wp_options SET option_value='http://domain:8080' WHERE option_name IN ('siteurl','home');\""

Note: pada option_value dapat diganti dengan nama domain atau IP server baru.

 

3. Verifikasi

Selanjutnya melakukann verifikasi status container dan akses Worpress.

Cek list continer berjalan.

sudo container ps –a
Gambar 14. List Container di Server Tujuan.

 

Akses Wordpress pada browser.

Gambar 15. Portal Admin Wordpress Server Tujuan.
Gambar 16. Verifikasi akses website kedua server.

Terlihat data telah berhasil termigrasi dengan sempurna.

 

E. Penutup

Dengan mengikuti langkah-langkah di atas, telah dapat melakukan migrasi data aplikasi yang terinstall pada container docker dengan mudah. Untuk informasi lebih lanjut, Anda dapat merujuk ke dokumentasi resmi Docker dan sumber-sumber lainnya.

 

Semoga panduan ini dapat membantu Anda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com atau (021) 5714567.