Cara menggunakan php ini docker

Kalau sebelumnya untuk membuat Web Server di local kita menggunakan software-software seperti XAMPP, WAMP, Server2GO dan sebagainya. Kali ini kita akan membuat Web Server dengan Docker.

01. Apa sih Docker?

Docker adalah platform perangkat lunak yang memungkinkan Anda membuat, menguji, dan menerapkan aplikasi dengan cepat. Docker mengemas perangkat lunak ke dalam unit standar yang disebut kontainer yang memiliki semua yang diperlukan perangkat lunak agar dapat berfungsi termasuk pustaka, alat sistem, kode, dan waktu proses. Dengan menggunakan Docker, Anda dapat dengan cepat menerapkan dan menskalakan aplikasi ke lingkungan apa pun dan yakin bahwa kode Anda akan berjalan.

https://aws.amazon.com/id/docker/

02. Kelebihan Docker dibandingkan dengan XAMPP, WAMP, dan sebagainya

  • Upgrade versi PHP dan Database serta install library lebih mudah (Configureable).
  • Karena Configureable, saat pindah-pindah komputer lain atau komputer kantor untuk development, tinggal copy konfigurasi Docker nya dan install (pastikan Docker sudah terinstall terlebih dahulu), hasilnya kita dapat mempunyai server local dengan konfigurasi yang sama dengan di komputer pribadi kita. Tidak perlu ribet install library sana-sini.
  • Bisa menyesuaikan Dev Environment dengan server production yang akan dipakai. Pada Docker, kita dapat menentukan OS yang akan dipakai ketika melakukan development.
  • Komputer lebih bersih dari file-file instalasi. Misalnya jika menggunakan Task Automation seperti Gulp, Grunt, dan sebagainya, dimana kita perlu install locally dulu dan file nya akan tertumpuk di komputer kita. Berbeda dengan Docker yang mana hanya diinstall di dalam setiap Container Docker saja tanpa perlu install di local komputer kita.

03. Install Docker
Silahkan mengunjungi web official Docker untuk mendownload software nya. https://www.docker.com/get-started

04. Setup Dockerfile
Setelah Docker ter-install, Anda buat sebuah folder baru dan beri nama dengan “docker-php-dev” atau nama lainnya sesuai keinginan Anda.

Lalu buat file baru dengan nama “Dockerfile” (tanpa extension) di dalam folder tersebut. Setelah itu buka file “Dockerfile” tersebut dan ketik kode berikut.

FROM ubuntu:18.04
ENV DEBIAN_FRONTEND=noninteractive

# Install Ruby
RUN apt-get -y update && apt-get install -y ruby-full
RUN ruby -v
RUN gem -v

# Install Utilities
RUN apt-get install -y curl unzip build-essential nano wget mcrypt
RUN apt-get -qq update && apt-get -qq -y install bzip2
RUN apt-get install -y chrpath libssl-dev libxft-dev
RUN apt-get install -y libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev

# Install ppa:ondrej/php PPA
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:ondrej/php
RUN apt-get update

# Install PHP 8
RUN apt-get update && apt-get install -y apache2
RUN apt-get install -y php-pear libapache2-mod-php8.0
RUN apt-get install -y php8.0-common php8.0-cli
RUN apt-get install -y php8.0-bz2 php8.0-zip php8.0-curl php8.0-gd php8.0-mysql php8.0-xml php8.0-dev php8.0-sqlite php8.0-mbstring php8.0-bcmath
RUN php -v
RUN php -m

# PHP Config
# Show PHP errors on development server.
RUN sed -i -e 's/^error_reporting\s*=.*/error_reporting = E_ALL/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^display_errors\s*=.*/display_errors = On/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^zlib.output_compression\s*=.*/zlib.output_compression = Off/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^zpost_max_size\s*=.*/post_max_size = 32M/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^upload_max_filesize\s*=.*/upload_max_filesize = 32M/' /etc/php/8.0/apache2/php.ini

# Apache Config
# Allow .htaccess with RewriteEngine.
RUN a2enmod rewrite

# Without the following line we get "AH00558: apache2: Could not reliably determine the server's fully qualified domain name".
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

# Authorise .htaccess files.
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

# Ports
EXPOSE 80 5000

# Start Apache2 on image start.
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]

# Purge old PHP
RUN apt-get update
RUN apt-get -y purge '^php7.4.*'
RUN php -v

# Install Git
RUN apt-get install -y git
RUN git --version

# Install SASS & Compass
RUN gem install sass
RUN gem install compass
RUN gem install css_parser

# Install Composer
RUN apt-get install -y php-cli
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN HASH="$(wget -q -O - https://composer.github.io/installer.sig)" && php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

# Install NodeJS & NPM
RUN apt-get purge nodejs
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt -y update
RUN apt install -y nodejs
RUN nodejs -v
RUN npm -v

# Install Task Automation
RUN apt-get install -y yarn
RUN npm install -g grunt-cli
RUN npm install gulp-cli -g

Sebagai informasi, kita disini akan membuat Docker Image kita sendiri dengan menginstall software atau tools yang kita butuhkan. Bisa dilihat pada kode tersebut, OS yang digunakan adalah Ubuntu versi 18.04 dan PHP yang diinstall adalah PHP versi 8.0.

Selain itu saya juga menambahkan beberapa perintah untuk menginstall tools tambahan seperti Composer, SASS Compass, NodeJS (NPM) dan Git untuk membantu development aplikasi atau website. Dengan begitu, Anda juga dapat menambahkan atau mengurangi tools sesuai kebutuhan Anda sendiri.

Jika sudah, buka terminal Anda lalu arahkan ke folder “docker-php-dev” dan ketik kode berikut untuk membuat Docker Image dengan nama “docker-php-dev”.

docker build -t docker-php-dev .

Cara menggunakan php ini docker

Setelah itu Docker akan menginstall Image dari list perintah yang sudah dibuat pada file “Dockerfile”. Menginstall Docker Image akan membutuhkan waktu yang cukup lama karena akan mendownload file nya terlebih dahulu. Jadi pastikan komputer Anda memiliki koneksi internet yang memadai.

Jika sudah selesai, Anda dapat melihat list Docker Image dengan mengetik kode berikut di terminal Anda.

docker image ls

05. Setup docker-compose.yml
Langkah selanjutnya buat file baru dengan nama “docker-compose.yml” dan ketik kode berikut.

# Version
version: '3.1'

# Setup
services:
  # PHP
  php:
    depends_on:
      - db
    image: docker-php-dev
    restart: always
    ports:
      - 5000:80
    volumes:
      - ./development:/var/www/html

  # PHPMyAdmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 5050:80
    environment:
      PMA_HOST: db

  # MySQL
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - wordpress_db:/var/lib/mysql
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: password

# Volumes
volumes:
  wordpress_db:
  wordpress_uploads:

File tersebut digunakan untuk mengkonfigurasi Container. Jika sudah, ketik kode berikut pada terminal untuk menjalankan Docker Container.

docker-compose up -d

Cara menggunakan php ini docker

Setelah semua Container “up”, silahkan ketik URL http://localhost:5000 pada browser Anda untuk membuka halaman Localhost dan ketik URL http://localhost:5050 untuk membuka halaman PHPMyAdmin (MySQL Database Admin, username: root, password: password).

06. Buat Kode PHP Sederhana
Langkah selanjutnya adalah membuat sebuah kode PHP sederhana untuk melakukan test apakah Web Server sudah berhasil dijalankan. Pada folder “docker-php-dev” akan muncul folder baru dengan nama “development”. Anda bisa menaruh file PHP Anda di folder tersebut. Sebagai contoh, saya membuat folder dengan name “testing”.

Cara menggunakan php ini docker

Lalu, di dalam folder “testing” tersebut, saya membuat file baru dengan nama “index.php” dan mengisi dengan kode berikut.

<?php
echo "Hello world!!";
?>

Hasilnya seperti berikut.

Cara menggunakan php ini docker

Selamat Web Server telah siap digunakan. Untuk masuk ke dalam console Container, Anda dapat mengetik kode berikut.

docker exec -it docker-php-dev_php_1 bash

Di dalam Container, Anda dapat menjalankan perintah-perintah yang telah Anda install sebelumnya pada file “Dockerfile”. Sebagai contoh, saya dapat menjalankan perintah Composer, Gulp, Grunt dan sebagainya.

Sampai sini dulu artikel kali ini. Selamat bereksplorasi. Semoga bermanfaat.

Github Repo: https://github.com/fachririyanto/docker-php
Featured Image: https://sheershoff.ru/custom-php-ini-docker-php-docker-compose-config/