Cara Migrasi WordPress ke Docker Container

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)

  1. Install dependency yang dibutuhkan:
    Digunakan untuk menyiapkan package pendukung sebelum install Docker.
    sudo apt update
    sudo apt install ca-certificates curl gnupg -y
  2. 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
  3. 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
  4. 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
  5. Cek hasil instalasi:
    Memastikan Docker dan Docker Compose sudah terpasang dengan benar.
    docker --version
    docker compose version

    Output :

    root@pwh:~# docker --version
    docker compose version
    Docker version 29.4.0, build 9d7ad9f
    Docker Compose version v5.1.2

Membuat Project Docker WordPress

  1. Buat folder project WordPress Docker:
    Folder ini digunakan sebagai tempat menyimpan semua konfigurasi Docker dan data WordPress.
    mkdir wordpress-docker
    cd wordpress-docker
  2. 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

  1. 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
  2. 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/mysql
    Bagian 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
  3. Menjalankan Docker
    docker compose up -d
  4. Akses WordPress
    http://IP_SERVER:8080

Proses Migrasi ke Docker

  1. 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/
  2. 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.
  3. 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
  4. 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 {} \;
  5. 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');
  6. Restart container Docker:
    Restart diperlukan agar semua konfigurasi dan perubahan data diterapkan dengan benar.
    docker compose restart

Setup Reverse Proxy

  1. 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
  2. Cek status Nginx:
    Perintah ini digunakan untuk memastikan Nginx sudah aktif dan berjalan dengan baik di VPS.
    sudo systemctl status nginx
  3. 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
  4. 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;
        }
    }
  5. 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
  6. Akses website melalui domain:
    Setelah semua konfigurasi berhasil, website dapat diakses melalui domain yang sudah diarahkan ke VPS.
    http://domainanda.com
    Catatan:
    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.


Artikel Lain

WhatsApp Kami

Support : +6282138153600

Finance : +6285191239466