Cara Setup Stack Web Server dengan Docker

Halo, Sobat Jagoan! Sebagai alat yang mampu menyediakan lingkungan terisolasi bagi aplikasi yang berjalan di atasnya, Docker juga dapat digunakan setup web server. Ini cocok jika kamu ingin memiliki lingkungan server di mana setiap komponen berada dalam wadah masing-masing, sehingga setup lebih mudah dengan struktur yang bersih dan rapi.

Artikel kali ini akan memandu kamu untuk membangun stack web server yang terdiri dari Nginx, PHP, dan MySQL di Docker. Yuk, mulai!

Prasyarat

Sebelum memulai, pastikan kamu telah menginstal Docker dan Docker Compose di server ya, Sob

Cara Setup Stack Web dengan Docker

Berikut ini langkah-langkah mudah setup web server di Docker.

Step 1: Buat file baru dengan nama docker-compose.yml di direktori projek.

Step 2: Konfigurasi docker-compose.yml

File docker-compose.yml digunakan untuk mendefinisikan semua service yang dibutuhkan untuk membangun stack web server. Sebagai contoh, berikut isi docker-compose.yml untuk stack web yang terdiri dari Nginx, PHP, dan MySQL.

				
					version: '3.9'
services:
  nginx:
    image: nginx:latest
    container_name: main_nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./www:/var/www/html
    depends_on:
      - php
    networks:
      - webserver
  php:
    image: php:8.2-fpm
    container_name: php-fpm
    volumes:
      - ./www:/var/www/html
    networks:
      - webserver
  mysql:
    image: mysql:latest
    container_name: my_db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: my_db
    volumes:
      - ./mysql_data:/var/lib/mysql
    networks:
      - webserver
networks:
  webserver:
    driver: bridge

				
			

Step 3: Selanjutnya, buat file konfigurasi Nginx, misalnya nginx.conf dengan aturan dasar kurang lebih seperti berikut ini:

				
					server {
    listen 80;
    server_name domain.com;
    root /var/www/html;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        include fastcgi_params;
    }
}

				
			

Catatan: Jangan lupa ganti namadomain.com dengan nama alamat situs kamu, Sob.

Step 4: Setelah itu, jalankan perintah berikut untuk download image dan container.

				
					docker-compose up -d
				
			

Step 5: Kemudian, periksa status dan akses web server dengan command:

				
					docker-compose ps
				
			

Jika telah dipastikan running, kamu bisa akses di browser dengan membuka http://domain.com. Nginx akan memproses request dan menghubungkan ke PHP-FPM jika tidak ada kendala dan semunaya berjalan dengan benar.

Membuat Dockerfile Nginx, PHP, dan MySQL

Ketika setup web server menggunakan Docker Compose, kamu perlu membuat Dockerfile untuk setiap komponen. Dan di langkah ini, kamu akan dipandu membuat Dockerfile Nginx, PHP, dan MySQL.

1) Dockerfile Nginx

Dockerfile Nginx cukup menggunakan image resmi dari Docker Hub, namun kamu bisa menambahkan konfigurasi khusus, misalnya konfigurasi Nginx dan website. Berikut contohnya:

				
					# Gunakan image resmi Nginx
FROM nginx:latest
# Salin konfigurasi Nginx dari host ke container
COPY nginx.conf /etc/nginx/nginx.conf
# Salin file website dari host ke container
COPY ./www /var/www/html
# Expose port 80 agar bisa diakses dari luar
EXPOSE 80

				
			

2) Dockerfile PHP

Berikut Dockerfile PHP dengan menggunakan PHP-FPM yang berjalan sebagai service terpisah.

				
					# Gunakan image resmi PHP dengan FPM
FROM php:8.2-fpm
# Install dependencies tambahan, misalnya ekstensi PHP
RUN apt-get update
apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    docker-php-ext-configure gd --with-freetype --with-jpeg \
    docker-php-ext-install gd
# Salin file website ke dalam container
COPY ./www /var/www/html
# Expose port 9000 agar bisa diakses oleh Nginx
EXPOSE 9000

				
			

3) Dockerfile MySQL

Buat MySQL, kamu bisa langsung menggunakan image resmi dari Docker Hub lalu atur variable buat password root dan database awal di file docker-compose.yml. Jadi tidak perlu buat Dockerfile khusus.

Sekarang, kamu telah memiliki stack web server yang terstruktur dan mudah dikelola berkat Docker Compose, Sob. Dan untuk mengoptimasi performa servernya, kamu bisa melakukan langkah sederhana seperti, memakai Docker volumes, mengatur resource limits, dan memanfaatkan caching. Fyi, Docker juga memberikan fleksibilitas mengelola berbagai container dalam satu tempat, lho.

Selamat mencoba, good luck, ya! Apabila ada yang masih bingung, jangan ragu hubungi Tim Support Jagoan Hosting melalui Live Chat atau Open Ticket, Sob.

Related Posts
Tips Mengatasi Error Undefined Index / Variable

Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more

Cara Membuat CSR dan PrivateKey untuk Mengaktifkan SSL Certificate

Tahu nggak, Sob! untuk dapat mengaktifkan layanan SSL murah, ada beberapa persyaratan yang harus disiapkan terlebih dahulu, diantaranya adalah CSR Read more

Tutorial Mendeteksi Script Jahat pada Website Sebelum Publish

Hai, Sob kamu pasti tentu tidak ingin jika website kamu dibobol oleh hacker, terutama jika kamu seorang programmer dan webmaster. Read more

Tutorial Install Virus Scanner Clam AV pada cPanel

Kamu ngerasa insecure karena belum install antivirus? Install antivirus emang penting, Sob untuk menjaga performa server kamu. Nah, kamu bisa Read more