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 :
- Mendownload alpine image versi 3.7 dan membuat container
- Menginstall apache
- Menginstall php7.1
- Menghubungkan antara apache dan php7.1
- Testing file php
- Build container menjadi image baru
- 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
ls
,pwd
,mkdir
,rm
, 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](https://www.latcoding.com/wp-content/uploads/2023/06/image-18.png)
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](https://www.latcoding.com/wp-content/uploads/2023/06/image-16.png)
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
![](https://www.latcoding.com/wp-content/uploads/2023/06/image-19.png)
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](https://www.latcoding.com/wp-content/uploads/2023/06/image-20.png)
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/
![](https://www.latcoding.com/wp-content/uploads/2023/06/image-21.png)
Cek file php, apakah bisa dibuka
http://localhost:9999/phpinfo.php
![](https://www.latcoding.com/wp-content/uploads/2023/06/image-22.png)
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