0

Install apache dan php7.1 di alpine docker image dan build menjadi image baru

Install apache dan php7.1 di alpine docker image.


Untuk menginstall apache dan php7.1 di alpine docker image, kita harus menggunakan alpine versi 3.7 (karena php yang tersedia pada repositorynya adalah php7.1). Bisa dicek repositorynya https://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/

Disini saya akan menggunakan Ubuntu 22.04 pada lokal komputer saya.


Daftar isi :

  1. Mendownload alpine image versi 3.7 dan membuat container
  2. Menginstall apache
  3. Menginstall php7.1
  4. Menghubungkan antara apache dan php7.1
  5. Testing file php
  6. Build container menjadi image baru
  7. Testing image baru

1. Mendownload alpine image versi 3.7 dan membuat container

Pastikan docker sudah terinstall di lokal komputer dan login sebagai root pada terminal ubuntu 22.04.

Mendownload apline image 3.7

Pull terlebih dahulu alpine 3.7 menggunakan command berikut ini:

docker pull alpine:3.7

Setelah itu image akan terdownload

3.7: Pulling from library/alpine
5d20c808ce19: Pull complete
Digest: sha256:8421d9a84432575381bfabd248f1eb56f3aa21d9d7cd2511583c68c9b7511d10
Status: Downloaded newer image for alpine:3.7
docker.io/library/alpine:3.7

Kita bisa cek imagenya sudah tersedia di lokal komputer kita dengan:

docker images alpine:3.7


Membuat container

Kita buat container baru dari image alpine yang sudah kita download sebelumnya

docker run -it --name container_apache_php7.1 -p 8888:80 alpine:3.7 sh

Penjelasan:

  • docker run = membuat container baru dari image alpine:3.7.
  • -it = mode interaktif dan tty. Kita akan masuk ke terminal container dan bisa melakukan input (STDIN).
  • –name container_apache_php7.1 = nama container yang kita buat.
  • -p 8888:80 = mengekspos port 8888 agar bisa diakses dari browser. Port 8888 akan diteruskan ke port yang ada didalam container yaitu port 80 / http yang akan digunakan oleh apache nanti.
  • apline:3.7 = image yang digunakan pada saat membuat container.
  • sh = sh artinya shell. Setelah container terbuat, maka akan menjalankan perintah sh. Dengan sh kita bisa melakukan operasi seperti lspwdmkdirrm, cat, touch, mkdir, cp, dll

Setelah menjalankan command diatas kita akan dibawa masuk kedalam container

/ #

Didalam container ini nantinya kita akan menginstall apache dan php menggunakan command apk add

2. Menginstall apache

Kita install apache menggunakan command berikut

apk add apache2

Setelah itu apache akan terdownload

fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/6) Installing libuuid (2.31.1-r0)
(2/6) Installing apr (1.6.3-r0)
(3/6) Installing expat (2.2.8-r0)
(4/6) Installing apr-util (1.6.1-r1)
(5/6) Installing pcre (8.41-r1)
(6/6) Installing apache2 (2.4.41-r0)
Executing apache2-2.4.41-r0.pre-install
Executing busybox-1.27.2-r11.trigger
OK: 8 MiB in 19 packages

Kita bisa cek versi apache

httpd -v

Hasilnya adalah

Server version: Apache/2.4.41 (Unix)
Server built: Aug 20 2019 09:10:57

Kemudian buat folder apache2 di dalam folder /run/ untuk menampung file httpd.pid ketika apache nanti dinyalakan. Sekedar info, PID adalah Process ID. Jadi setiap aplikasi yang berjalan akan membuat process ID, termasuk apache.

cd /run/
mkdir apache2

Kita juga perlu mengeset ServerName apache, untuk mencegah terjadinya error ketika apache dijalankan

vi /etc/apache2/httpd.conf

Pada awal baris httpd.conf tambahkan script ini, lalu save

ServerName localhost 

Baru kemudian hidupkan apache dengan cara:

httpd -k start

Setelah itu file httpd.pid akan terbuat didalam folder /run/apache2

/run # ls -al /run/apache2/
total 12
drwxr-xr-x 2 root root 4096 Jun 17 04:49 .
drwxr-xr-x 1 root root 4096 Jun 17 04:45 ..
-rw-r--r-- 1 root root 3 Jun 17 04:49 httpd.pid

Kita juga bisa melihat process IDnya menggunakan command ps aux

how to check process ID apache in alpine container image

Selanjutnya kita akan mengecek apakah apache sudah bisa dibuka lewat browser

http://localhost:8888/

Hasilnya, apache sudah hidup dan bisa diakses menggunakan port 8888

Install apache dan php7.1 di alpine docker image

Halaman tersebut mengarah ke /var/www/localhost/htdocs/ yang merupakan root public folder apache. Jadi kedepan kita akan menggunakan folder htdocs ini untuk keperluan testing php.

3. Menginstall php7.1

Kita akan menginstall php beserta module-modulenya.

Install php7.1

Install php7.1 menggunakan command berikut

apk add php7

Akan terdownload php7 dari repository alpine

fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/7) Installing php7-common (7.1.33-r0)
(2/7) Installing ncurses-terminfo-base (6.0_p20171125-r1)
(3/7) Installing ncurses-terminfo (6.0_p20171125-r1)
(4/7) Installing ncurses-libs (6.0_p20171125-r1)
(5/7) Installing libedit (20170329.3.1-r3)
(6/7) Installing libxml2 (2.9.8-r1)
(7/7) Installing php7 (7.1.33-r0)
Executing busybox-1.27.2-r11.trigger
OK: 21 MiB in 26 packages

Untuk melihat versi phpnya

php7 -v

Outputnya adalah php7.1.33

PHP 7.1.33 (cli) (built: Oct 26 2019 06:32:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

FYI, jika kita ingin mengupdate konfigurasi php, misal menaikkan memory_limit, menambah extension, dll semua pengaturan ada didalam folder ini

/etc/php7/


Install module php7.1

Untuk menginstall module php, misal mysql, zip dan xml bisa menggunakan command berikut ini:

apk add php7-mysqli php7-zip php7-xml

Kemudian kita bisa cek modulenya apakah sudah terinstall

~ # php7 -m
[PHP Modules]
Core
date
filter
hash
libxml
mysqli
mysqlnd
openssl
pcre
readline
Reflection
SPL
standard
xml
zip
zlib

[Zend Modules]

Untuk menginstall module lainnya bisa cek di repository https://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/

4. Menghubungkan antara apache dan php7.1

Di alpine image, cara menghubungkan apache dan php adalah dengan menggunakan module php7-apache2, bukan menggunakan libapache2-mod-php seperti yang biasa dilakukan di ubuntu.

Jadi kita harus menginstall php7-apache2 terlebih dahulu, jalankan command berikut:

apk add php7-apache2

Setelah itu kita bisa cek di /etc/apache2/conf.d/ akan ada file konfigurasi php7 disana

~ # ls -al /etc/apache2/conf.d/
total 40
drwxr-xr-x 2 root root 4096 Jun 17 12:00 .
drwxr-xr-x 3 root root 4096 Jun 17 04:32 ..
-rw-r--r-- 1 root root 2221 Aug 20 2019 default.conf
-rw-r--r-- 1 root root 1191 Aug 20 2019 info.conf
-rw-r--r-- 1 root root 5078 Aug 20 2019 languages.conf
-rw-r--r-- 1 root root 4452 Aug 20 2019 mpm.conf
-rw-r--r-- 1 root root 378 Oct 26 2019 php7-module.conf
-rw-r--r-- 1 root root 732 Aug 20 2019 userdir.conf

Bagus sudah ada konfigurasinya, sekarang tinggal kita restart apachenya supaya apache bisa membaca file konfigurasi tersebut

httpd -k stop
httpd -k start

Harusnya sampai sini, apache dan php sudah bisa terhubung. Kita akan buktikan di step selanjutnya

5. Testing file php

Masuk ke folder /var/www/localhost/htdocs, lalu buat file

test.php

<?php
echo "ini file php\n";
?>

Lalu jalankan dibrowser

http://localhost:8888/test.php

Jika menampilkan output seperti diatas, berarti php sudah berjalan dengan baik. Kita coba test dengan file lain, misal

phpinfo.php

<?php
phpinfo();
?>

Lalu buka lewat browser lagi, harusnya akan menampilkan detail konfigurasi php.

Install apache dan php7.1 di alpine docker image

Sampai sini php dan apache sudah berhasil terhubung.

6. Build container menjadi image baru

Kita sudah menginstall apache dan php didalam container bernama container_apache_php7.1. Untuk menkonversikanya menjadi image baru, kita bisa lakukan dengan perintah docker commit. Buka terminal baru (new tab) dan jalankan perintah berikut

docker commit --change='CMD ["httpd", "-D", "FOREGROUND"]' container_apache_php7.1 my_image_apache_php7.1

Penjelasan:

  • Pada perintah diatas kita akan menjalankan httpd setiap container akan distart.
  • container_apache_php7.1 merupakan nama container yang tadi kita buat.
  • my_image_apache_php7.1 adalah nama image yang akan kita buat.


Setelah commit diatas dijalankan, harusnya akan ada image baru dengan nama my_image_apache_php7.1. Kita bisa mengeceknya dengan

docker images my_image_apache_php7.1

7. Testing image baru

Kita akan test image my_image_apache_php7.1 yang barusan kita buat, apakah ada error atau bugs saat kita jalankan containernya. Kita akan buat container baru dari image tersebut

docker run -itd --name my_new_test -p 9999:80 my_image_apache_php7.1

Buka melalui browser

http://localhost:9999/

Cek file php, apakah bisa dibuka

http://localhost:9999/phpinfo.php

Jika 2 URL tersebut bisa dibuka, berarti apache dan php berjalan dengan baik. Artinya image my_image_apache_php7.1 sudah bisa digunakan dalam tahap dev atau prod dalam pembuatan aplikasi. Kita bisa gunakan di lingkungan docker atau kubernetes.


Demikianlah tutorial Install apache dan php7.1 di alpine docker image

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.