Cara Migrasi WordPress ke Docker Container
Pengantar
Migrasi WordPress ke Docker container kini semakin populer di kalangan developer dan pemilik website karena menawarkan sistem yang lebih rapi, fleksibel, dan mudah dikelola. Dengan Docker, seluruh kebutuhan WordPress dapat dijalankan dalam satu lingkungan terisolasi sehingga tidak perlu lagi melakukan konfigurasi server secara manual satu per satu. Konsep seperti Docker, container, dan docker-compose memang terlihat kompleks, namun sebenarnya cukup mudah dipahami jika dijelaskan secara bertahap. Beberapa keuntungan utama migrasi WordPress ke Docker antara lain proses setup server yang lebih cepat dan praktis, kemudahan dalam menyamakan lingkungan development dan production, portabilitas tinggi sehingga mudah dipindahkan ke server lain, serta tingkat keamanan yang lebih baik karena setiap komponen berjalan secara terisolasi. Selain itu, Docker juga sangat cocok digunakan dalam workflow modern seperti DevOps karena mendukung pengelolaan sistem yang lebih efisien dan konsisten. Artikel ini akan membahas cara migrasi WordPress ke Docker container secara lengkap dengan langkah-langkah yang jelas, terstruktur, dan mudah diikuti.
Apa Itu Docker dan Cara Kerjanya?
Docker adalah platform yang digunakan untuk menjalankan aplikasi dalam sebuah lingkungan terisolasi yang disebut container. Container ini berisi semua komponen yang dibutuhkan agar sebuah aplikasi bisa berjalan dengan baik, tanpa perlu bergantung pada konfigurasi sistem operasi utama.
Dengan Docker, proses instalasi dan setup aplikasi menjadi jauh lebih cepat dan konsisten, karena semua dependensi sudah dikemas di dalam container tersebut.
Cara Kerja Docker:
Docker bekerja dengan cara membuat container dari sebuah image. Image ini berisi template aplikasi yang sudah dikonfigurasi sebelumnya. Ketika image dijalankan, Docker akan membuat container yang bisa langsung digunakan untuk menjalankan aplikasi.
- Developer membuat atau menggunakan Docker Image
- Image dijalankan menjadi Container
- Container berjalan secara terisolasi dari sistem utama
- Aplikasi langsung bisa digunakan tanpa setup manual yang rumit
Kelebihan Menggunakan Docker:
- Instalasi aplikasi lebih cepat dan praktis
- Lingkungan lebih konsisten (tidak tergantung konfigurasi server)
- Mudah dipindahkan ke server lain
- Meminimalisir konflik antar aplikasi
Dengan Docker, Anda tidak perlu lagi melakukan instalasi manual seperti mengatur web server, database, dan dependency satu per satu. Cukup menjalankan container, maka seluruh sistem aplikasi sudah siap digunakan dalam waktu singkat.
Persiapan Sebelum Migrasi
Sebelum melakukan migrasi berikut Komponen dan Environment yang perlu di persiapkan
Komponen yang dimigrasikan
- WordPress v6.9 (file core + wp-content)
- Theme Astra dan seluruh plugin yang digunakan
- Database WordPress (MySQL)
- Domain yang sudah aktif
Environment Docker di VPS:
- VPS Ubuntu 24.04
- Docker versi terbaru
- Docker Compose (plugin)
- Nginx Reverse Proxy
Install Docker (Versi Terbaru)
- Install dependency yang dibutuhkan:
Digunakan untuk menyiapkan package pendukung sebelum install Docker.sudo apt update sudo apt install ca-certificates curl gnupg -y - Tambahkan GPG key Docker:
Digunakan untuk verifikasi keamanan paket Docker dari repository resmi.sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null sudo chmod a+r /etc/apt/keyrings/docker.asc - Tambahkan repository Docker:
Menambahkan sumber repository resmi Docker ke sistem VPS.echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - Install Docker dan Docker Compose versi terbaru:
Menginstall Docker Engine dan Docker Compose dari repository resmi.sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y - Cek hasil instalasi:
Memastikan Docker dan Docker Compose sudah terpasang dengan benar.docker --version docker compose versionOutput :
root@pwh:~# docker --version docker compose version Docker version 29.4.0, build 9d7ad9f Docker Compose version v5.1.2
Membuat Project Docker WordPress
- Buat folder project WordPress Docker:
Folder ini digunakan sebagai tempat menyimpan semua konfigurasi Docker dan data WordPress.mkdir wordpress-docker cd wordpress-docker - Struktur Folder:
Berikut struktur dasar yang akan digunakan untuk menyimpan file konfigurasi, data WordPress, dan database.wordpress-docker/ ├── docker-compose.yml ├── wp_data/ └── db_data/
Konfigurasi Docker Composer
- Buat file docker-compose.yml:
File ini digunakan untuk mendefinisikan layanan WordPress dan database MySQL yang akan dijalankan dalam Docker container.nano docker-compose.yml - Isi konfigurasi docker-compose.yml:
Konfigurasi ini berisi service WordPress sebagai aplikasi utama dan MySQL sebagai database.services: wordpress: image: wordpress:latest container_name: wp_app restart: always ports: - "8080:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wp_user WORDPRESS_DB_PASSWORD: wp_pass WORDPRESS_DB_NAME: wp_db volumes: - ./wp_data:/var/www/html depends_on: - db db: image: mysql:8.0 container_name: wp_db restart: always environment: MYSQL_DATABASE: wp_db MYSQL_USER: wp_user MYSQL_PASSWORD: wp_pass MYSQL_ROOT_PASSWORD: root_pass volumes: - ./db_data:/var/lib/mysqlBagian yang perlu disesuaikan:
• wp_user : ganti dengan username database kamu
• wp_pass : ganti dengan password database yang kuat
• wp_db : nama database sesuai kebutuhan
• root_pass : password root MySQL (wajib kuat untuk keamanan)
• ports "8080:80" : bisa diubah jika port 8080 sudah dipakai - Menjalankan Docker
docker compose up -d - Akses WordPress
http://IP_SERVER:8080
Proses Migrasi ke Docker
- Upload file backup ke VPS:
File backup WordPress dapat diupload ke VPS menggunakan SCP, SFTP/FTP, atau wget jika tersedia link download. SCP direkomendasikan karena lebih cepat dan aman untuk transfer file langsung dari lokal ke server.Contoh menggunakan SCP:
scp backup-wordpress.tar.gz root@IP_VPS:/root/wordpress-docker/ scp database.sql root@IP_VPS:/root/wordpress-docker/ - Extract dan pindahkan file ke wp_data:
Masuk ke folder project Docker terlebih dahulu, lalu ekstrak file backup WordPress dan pindahkan ke folder wp_data.cd ~/wordpress-docker tar -xvzf backup-wordpress.tar.gz cp -r folder-wordpress/* wp_data/catatan:
Jika sudah memiliki folder WordPress dari hasil extract sebelumnya, cukup langsung copy ke wp_data tanpa perlu extract ulang. - Import database ke container MySQL:
Jika file database masih dalam format .gz, lakukan extract terlebih dahulu sebelum diimport ke container.gunzip database.sql.gz docker exec -i wp_db mysql -u wp_user -pwp_pass wp_db < database.sql - Atur permission file:
Permission diperlukan agar WordPress dapat membaca dan menulis file dengan benar tanpa error.chown -R www-data:www-data wp_data find wp_data -type d -exec chmod 755 {} \; find wp_data -type f -exec chmod 644 {} \; - Sesuaikan wp-config.php di dalam wp_data:
Pastikan konfigurasi database sesuai dengan environment Docker agar WordPress dapat terhubung ke database.define('DB_NAME', 'wp_db'); define('DB_USER', 'wp_user'); define('DB_PASSWORD', 'wp_pass'); define('DB_HOST', 'db'); - Restart container Docker:
Restart diperlukan agar semua konfigurasi dan perubahan data diterapkan dengan benar.docker compose restart
Setup Reverse Proxy
- Install Nginx di VPS:
Nginx digunakan sebagai web server dan akan berfungsi sebagai reverse proxy untuk mengarahkan domain ke aplikasi WordPress di Docker.sudo apt update sudo apt install nginx -y - Cek status Nginx:
Perintah ini digunakan untuk memastikan Nginx sudah aktif dan berjalan dengan baik di VPS.sudo systemctl status nginx - Buat konfigurasi reverse proxy:
File ini digunakan untuk mengarahkan akses domain ke container WordPress yang berjalan di port 8080.sudo nano /etc/nginx/sites-available/wordpress - Isi konfigurasi Nginx:
Konfigurasi ini menghubungkan domain ke aplikasi WordPress di Docker melalui localhost port 8080.server { listen 80; server_name domainanda.com www.domainanda.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } - Aktifkan konfigurasi Nginx:
Langkah ini digunakan untuk mengaktifkan konfigurasi yang sudah dibuat dan memastikan Nginx membaca setting baru.sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx - Akses website melalui domain:
Setelah semua konfigurasi berhasil, website dapat diakses melalui domain yang sudah diarahkan ke VPS.http://domainanda.comCatatan:
Jika website sudah tampil, maka konfigurasi reverse proxy Nginx sudah berhasil berjalan dengan baik.
Kesimpulan
Migrasi WordPress ke Docker container merupakan langkah cerdas untuk meningkatkan fleksibilitas, efisiensi, serta kemudahan dalam pengelolaan website karena dengan Docker proses deployment menjadi lebih sederhana, environment lebih konsisten, dan sistem lebih mudah di-scale sesuai kebutuhan; mulai dari proses backup, setup Docker Compose, hingga import database dapat dilakukan secara sistematis tanpa kerumitan berlebih, dan jika ingin berkembang lebih jauh, setup ini juga dapat diintegrasikan dengan CI/CD pipeline, orchestration menggunakan Kubernetes, serta fitur auto scaling container untuk mendukung pengelolaan server modern yang lebih optimal.


