Thursday 2 September 2021

Fix Set Up Docker PHP, Nginx, Mysql, PHPMYADMIN

docker dan docker compose setup untuk membangun web server - Docker telah mempermudah proses scaling aplikasi dan bisa digunakan di dalam proses development maupun deployment. Artikel kali ini akan membahas tentang langkah-langkah membangun web server sendiri seperti XAMPP, LAMP, atau MAMP dengan docker.

1. Struktur Folder

Berikut ini adalah struktur folder web server yang kita beri nama localapp.



2. Set up Docker Compose File

/docker-compose.yaml

# Mendefinisikan Versi Docker Compose
version: '3.8'

# Mendefinisikan Voulmes
volumes: 
  # Untuk Menyimpan Seluruh Data Dalam Database
  localdb:

# Mendefinisikan Networks
networks:
  # Untuk Mengkoneksikan Antar Services
  localapp:

# Mendefinisikan Services Yang Akan Dipakai
services:
  # Nama Service Untuk Web Server (nginx)
  nginx:
    # Gunakan Image Nginx Tag Alpine
    image: nginx:alpine
    # Kaitkan Folder Lokal Ke Container
    volumes: 
      # Folder Web
      - "./htdocs:/var/www"
      # Folder Konfigurasi Nginx
      - "./.build/nginx/conf.d:/etc/nginx/conf.d"
    # Ekspose Port
    ports: 
    # 80 (http://localhost)
      - "80:80"
    # Jalankan Nginx Jika Service php Dan db Sudah Berjalan
    depends_on: 
      - php
      - db
    # Koneksikan Ke Network localapp
    networks: 
      - localapp

  # Nama Service Untuk PHP
  php:
    # Build Image Dengan Dockerfile Di Folder ./.build/php
    build: ./.build/php
    # Kaitkan Folder Lokal Ke Container
    volumes:
      # Jalankan PHP Di Semua Folder Web
      - "./htdocs:/var/www"
    # Koneksikan Ke Network localapp
    networks: 
      - localapp

  # Nama Service Untuk Database  
  db:
    # Gunakan Image mysql Tag latest
    image: mysql:latest
    # Environment Yang Dibutuhkan mysql
    environment: 
      MYSQL_ROOT_PASSWORD: root
      MYSQL_PASSWORD: secret
      MYSQL_USER: homestead
    # Expose Port Agar Dapat Diakses Melalui Aplikasi MYSQL Client (phpmyadmin)
    ports: 
      - "3306:3306"
    # Simpan Semua Data Dalam Volumes localdb
    volumes: 
     - "localdb:/var/lib/mysql"
    # Koneksikan Ke Network localapp
    networks: 
      - localapp
  
  # Nama Service Untuk PHPMYADMIN
  phpmyadmin:
    # Gunakan Image phpmyadmin
    image: phpmyadmin/phpmyadmin
    # Expose Port
    ports: 
      # Gunakan Port 8081 Untuk Mengakses phpmyadmin
      - "8081:80"
    # Koneksikan Ke Network localapp
    networks: 
      - localapp

3. Set up Nginx Config

/.build/nginx/conf.d/localapp.conf

server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

4. Buat image PHP

/.build/php/Dockerfile

FROM php:7.4-fpm
RUN docker-php-ext-install mysqli

5. Jalankan Aplikasi

docker-compose up --build



Seluruh kode set up ini bisa kalian clone/unduh secara gratis melalui link ini: Docker Web Server Fix Set Up

Oke, itulah cara membangun web server dengan fix set up di docker. Semoga artikel ini bisa membantu kalian paham tentang docker dan bisa memudahkan kalian meng-improve web server kalian sendiri seperti menambah bahasa perl, python, atau install composer di dalam container misalnya. Semua itu bisa dilakukan hanya dengan membuat service baru di docker-compose.

Terima Kasih!

0 komentar

Post a Comment

Hai, Mohon Komentar Yang Relevan Dan Tidak OOT!