Raka adalah seorang developer yang ingin belajar WordPress di komputer lokalnya menggunakan Docker supaya instalasinya mudah dan rapi. Namun, perjalanannya tidak semulus yang dia bayangkan. Berikut ceritanya.
Mulai Perjuangan: Mengecek Docker
Suatu hari, Raka duduk di depan komputernya dan mengetik:
sudo systemctl status docker
Tapi, Docker ternyata tidak berjalan. Dia coba start dengan:
sudo systemctl start docker
Namun, tiba-tiba muncul error aneh:
failed to dial "/run/containerd/containerd.sock": timeout
Raka bingung, kenapa Docker gak bisa jalan?
Misteri containerd yang Ter-mask
Raka mencari tahu lebih dalam dan menjalankan:
sudo systemctl status containerd
Dan ternyata hasilnya:
Unit containerd.service is masked.
“Apa itu maksudnya, ya?” pikir Raka.
Ternyata, service containerd, yang diperlukan Docker untuk berjalan, sengaja di-disable alias masked.
Raka pun menjalankan perintah berikut untuk mengaktifkannya:
sudo systemctl unmask containerd
sudo systemctl enable containerd
sudo systemctl start containerd
Setelah itu, dia coba lagi start Docker:
sudo systemctl restart docker
sudo systemctl status docker
Syukurlah, Docker sekarang sudah jalan!
Memulai Instalasi WordPress dengan Docker
Raka sudah siap install WordPress lokal dengan Docker. Dia tahu WordPress butuh database MySQL, jadi dia mulai dengan menjalankan container MySQL:
docker run -d --name mysql-server \
-e MYSQL_ROOT_PASSWORD=rootpassword \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wpuser \
-e MYSQL_PASSWORD=wppassword \
-p 3306:3306 \
mysql:5.7
Kemudian, Raka menjalankan WordPress container yang terhubung ke MySQL tadi:
docker run -d --name wordpress-site \
--link mysql-server:mysql \
-p 8080:80 \
-e WORDPRESS_DB_HOST=mysql:3306 \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=wppassword \
-e WORDPRESS_DB_NAME=wordpress \
wordpress:latest
Dia membuka browser dan mengetik:
http://localhost:8080
“Wow, WordPress berhasil jalan!” seru Raka.
Membuat Hidup Raka Lebih Mudah: Skrip Otomatis
Raka merasa capek ketik panjang-panjang perintah itu setiap kali instalasi. Akhirnya, dia membuat skrip install-wp.sh
supaya tinggal klik dan jalan:
#!/bin/bash
echo "Menjalankan MySQL container..."
docker run -d --name mysql-server \
-e MYSQL_ROOT_PASSWORD=rootpassword \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wpuser \
-e MYSQL_PASSWORD=wppassword \
-p 3306:3306 \
mysql:5.7
echo "Menjalankan WordPress container..."
docker run -d --name wordpress-site \
--link mysql-server:mysql \
-p 8080:80 \
-e WORDPRESS_DB_HOST=mysql:3306 \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=wppassword \
-e WORDPRESS_DB_NAME=wordpress \
wordpress:latest
echo "WordPress dan MySQL sudah berjalan!"
echo "Buka http://localhost:8080 untuk mulai setup WordPress."
Dia menjalankan skrip itu dan semuanya berjalan mulus.
Edit WordPress Secara Real-time
Raka ingin juga bisa edit file WordPress secara langsung tanpa masuk ke container. Maka dia menjalankan WordPress dengan volume mount:
docker run -d --name wordpress-site \
--link mysql-server:mysql \
-p 8080:80 \
-v /home/raka/wp:/var/www/html \
-e WORDPRESS_DB_HOST=mysql:3306 \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=wppassword \
-e WORDPRESS_DB_NAME=wordpress \
wordpress:latest
Sekarang, Raka bisa edit file WordPress di folder lokal /home/raka/wp
dan perubahan langsung terlihat di browser.
Penutup
Dengan sedikit perjuangan, Raka akhirnya berhasil instal WordPress lokal dengan Docker. Dia belajar juga bagaimana cara mengatasi error Docker dan containerd yang masked, serta bagaimana mengotomasi instalasi supaya lebih cepat dan efisien.
Kalau kamu juga seperti Raka, tinggal ikuti langkah ini dan jangan takut kalau ada error. Semua bisa diatasi! Kalau butuh bantuan, tanya saja ya.