Kali ini, kita akan belajar bagaimana cara migrasi website WordPress yang sudah berjalan baik itu di shared hosting maupun di VPS ke Docker container. Pada dasarnya tool yang digunakan tetap sama yaitu Docker Compose, yang perlu ditambahkan adalah mengimpor WordPress dan database hasil backup.

Tutorial Environment

WordPress yang ingin dipindahkan:

  • WordPress v5.9
  • Theme Blocksy dan pluginnya
  • Domain vcompcenter.com
  • DNS dan SSL Cloudflare

Docker host:

  • VPS Ubuntu 22.04
  • Docker 20.10
  • Docker Compose 2.5
  • Nginx reverse proxy

WordPress Backup

Diasumsikan WordPress telah dibackup dan ditransfer ke VPS. Filenya disimpan di folder /home/user.

  • Folder WordPress: /home/musa/vcmweb
  • File backup database: /home/musa/wp.sql

Install Requirements

Login SSH ke server lalu install Docker.

Install Docker Compose.

Install Nginx.

Logout dari koneksi SSH, lalu login kembali.

Setup Folder Website

Membuat folder untuk menyimpan file WordPress dan database.

Copy file WordPress ke folder src.

Copy file .sql ke folder initdb.d.

Docker Compose

Membuat file docker-compose.

Isi dari file docker-compose.yml.

Yang akan dijalankan oleh docker-compose.yml yaitu:

  • Membuat container dengan nama vcmweb_db dari image mariadb/sever:10.5. Terdapat 2 volume, mount dari folder yang telah dibuat untuk database. Database disimpan di folder data dan folder initdb.d yang berisi file .sql yang akan diimport ketika containter dibuat. MYSQL_USERNAME, PASSWORD, dan DATABASE disesuaikan dengan yang ada di file wp-config.php, sementara untuk MYSQL_ROOT_PASSWORD bisa ditentukan sendiri.
  • Membuat container dengan nama musaamin_site dari image wordpress dengan php7.4. Container ini berjalan di port 8080. Folder src yang berisi file WordPress dimount ke /var/www/html

Menjalankan docker-compose.

Menampilkan Docker container yang sedang berjalan.

Hasil yang ditampilkan.

Konfigurasi Nginx

Selanjutnya melakukan konfigurasi Nginx untuk reverse proxy ke Docker containter.

Generate dhparam.pem.

Membuat file server block.

Isi dari file konfigurasi server block.

Konfigurasinya sama seperti dengan Nginx server block yang berjalan di port 443 (HTTPS). Pastikan sertifikat dan private key SSL sudah tersedia di server, bisa didapatkan di Cloudflare (SSL/TLS -> Origin Server -> Create Certificate). Ketika website diakses, permintaan tersebut akan diteruskan ke container yang berjalan di port 8080.

Uji konfigurasi Nginx lalu restart.

Konfigurasi WordPress

Membuka file wp-config.php dengan nano.

Mengubah DB_HOST dari localhost menjadi nama containter, musaamin_db.

Masukkan konfigurasi HTTPS berikut di atas /* That’s all, stop editing! Happy publishing. */.

Membuat file .htaccess jika belum ada.

Isi file .htaccess.

Update DNS Record

Update DNS record, ubah ke IP server Docker host.

Pengujian

Lakukan pengujian untuk memastikan semuanya sudah berfungsi dengan baik.

  • Akses halaman depan
  • Akses post detail
  • Akses halaman dashboard
  • Install theme atau plugin
  • Posting artikel

Membackup Database

Membackup database yang berjalan di container.

Menghapus Container

Menghapus container dengan docker-compose.

Meskipun container sudah terhapus, tetapi datanya masih tetap ada.

Selamat mencoba