0

Install nginx dan php-fpm versi 7.3 di alpine docker image dan build menjadi image baru

Install nginx dan php-fpm 7.3 di alpine docker image.

Di alpine, jika kita ingin menginstall php-fpm dengan versi tertentu, kita harus sesuaikan juga versi alpine yang digunakan. Sebagai contoh jika kita ingin menginstall php-fpm versi 7.3 kita harus menggunakan alpine versi 3.12. Referensinya bisa dilihat pada repository alpine disini http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/

Jika kita cari php-fpm pada repository tersebut maka php-fpm yang tersedia adalah versi 7.3.

Ditutorial kali ini kita akan mencoba menginstall php-fpm versi 7.3 dan nginx pada alpine docker image.


Daftar isi:

  • Mendownload alpine docker image dan membuat container
  • Install Nginx
  • Install Php-fpm versi 7.3
  • Menghubungkan antara nginx dengan Php-fpm 7.3
  • Build menjadi image baru
  • Test image baru

Mendownload alpine docker image dan membuat container

Pastikan docker sudah terinstall pada lokal komputer.

Mendownload alpine docker image

jalankan perintah berikut untuk mendownload alpine dari repository docker:

docker pull alpine:3.12

setelah terdownload maka akan ada image baru di lokal komputer dengan nama alpine dan tag 3.12. Kita bisa cek dengan perintah berikut

docker images alpine:3.12


Membuat container

Selanjutnya membuat container dari image alpine:3.12 yang tadi sudah kita download. Kita akan coba mengekspos port pada container tersebut agar bisa diakses dari browser. Jalankan perintah berikut:

docker run -it --name mycontainer -p 92:80 alpine:3.12 sh

Keterangan:

  • docker run = membuat container baru dari image alpine:3.12.
  • -it = mode interaktif dan tty. Kita akan masuk ke terminalnya container dan bisa melakukan input (STDIN).
  • –name mycontainer = nama container yang dibuat.
  • -p 92:80 = mengekspos port 92 agar bisa diakses dari browser. Setelah port 92 diakses akan diteruskan ke port yang ada didalam container yaitu port 80 / http yang akan digunakan oleh nginx nanti.
  • apline:3.12 = 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, dll


Jika kita buka lewat browser dengan memasukkan port 92

http://localhost:92

Maka akan tampil error

This site can’t be reached


Error tersebut muncul karena kita belum menginstall nginx. Selanjutnya kita akan menginstall nginx.

Install Nginx

Jalankan perintah berikut untuk menginstall nginx di alpine docker image:

apk add nginx

Setelah itu akan mendownload nginx dari repository

fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/2) Installing pcre (8.44-r0)
(2/2) Installing nginx (1.18.0-r3)
Executing nginx-1.18.0-r3.pre-install
Executing busybox-1.31.1-r22.trigger
OK: 7 MiB in 16 packages

Jalankan dengan perintah berikut untuk menyalakan web server nginx

cd /run/
mkdir nginx
cd nginx
touch nginx.pid
nginx

Dan buka lagi di browser dengan url

http://localhost:92

Sekarang nginx sudah bisa diakses walaupun tampilannya 404 Not Found. Itu karena kita belum set pengaturan di default.conf nginx. Untuk sementara biarkan tampilannya seperti ini dulu.

Install Php-fpm versi 7.3

Jalankan perintah berikut untuk menginstall php-fpm versi 7.3

apk add php-fpm

Setelah itu akan mendownload php-fpm versi 7.3

(1/9) Installing php7-common (7.3.33-r0)
(2/9) Installing argon2-libs (20190702-r1)
(3/9) Installing ncurses-terminfo-base (6.2_p20200523-r1)
(4/9) Installing ncurses-libs (6.2_p20200523-r1)
(5/9) Installing libedit (20191231.3.1-r0)
(6/9) Installing pcre2 (10.35-r0)
(7/9) Installing xz-libs (5.2.5-r1)
(8/9) Installing libxml2 (2.9.14-r0)
(9/9) Installing php7-fpm (7.3.33-r0)
Executing busybox-1.31.1-r22.trigger
OK: 15 MiB in 25 packages

Setelah terdownload kita bisa cek detail versinya

php-fpm7 -v

Untuk melihat module apa saja yang sudah terinstall kita bisa cek dengan

php-fpm7 -m

Jika ingin menginstall module lainnya, contoh zip dan xml kita bisa install dengan

apk add php7-zip php7-xml

Untuk menghidupkan php-fpm menggunakan perintah berikut

php-fpm7

Untuk mengecek apakah php-fpm7 sudah running dengan

ps aux
Install nginx dan php-fpm 7.3 di alpine

Menghubungkan antara nginx dengan Php-fpm 7.3

Nginx dan php-fpm sudah terinstall, selanjutnya menghubungkan nginx dengan php-fpm 7.3.

Buka konfigurasi default.conf pada nginx

vi /etc/nginx/conf.d/default.conf

Ganti isinya dengan konfigurasi berikut

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        location ~ \.php$ {
                root /var/www/localhost/htdocs;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index     index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }

        # You may need this to prevent return 404 recursion.
        location = /404.html {
                internal;
        }
}

Secara default, area kerja nginx ada di /var/www/localhost/htdocs maka diatas kita set rootnya ke folder htdocs. Lalu cara menghubungkan nginx dengan php-fpm adalah melalui socket. Pada script diatas kita panggil php-fpm menggunakan fastcgi ke IP lokal (127.0.0.1) dengan port 9000.

Setelah konfigurasi diatas kita save, lalu reload nginx dengan perintah

nginx -s reload

Buka kembali url

http://localhost:92

Maka akan tampil halaman baru Welcome to nginx!

Install nginx dan php-fpm 7.3 di alpine


Kita akan tambahkan file phpinfo.php untuk mengetest file php apakah berfungsi dengan baik

cd /var/www/localhost/htdocs
echo "<?php echo phpinfo(); ?>" > phpinfo.php

Buka phpinfo.php melalui browser

http://localhost:92/phpinfo.php

Jika tampilannya seperti dibawah, maka php berfungsi dengan baik

Install nginx dan php-fpm 7.3 di alpine


Build menjadi image baru

Untuk menkonversi container yang tadi kita buat menjadi image baru, kita bisa lakukan dengan perintah docker commit. Buka terminal baru (new tab) dan jalankan perintah berikut

docker commit --change='CMD php-fpm7 -D && nginx -g "daemon off;"' mycontainer my_new_image:1.0

Pada perintah diatas kita akan menjalankan nginx dan php-fpm7 bersamaan dalam 1 container.

mycontainer merupakan nama container yang tadi kita buat, sedangkan my_new_image:1.0 adalah nama image baru.

Setelah commit diatas dijalankan, harusnya akan ada image baru my_new_image:1.0. Kita bisa mengeceknya dengan

docker images my_new_image:1.0

Test image baru

Kita test apakah image baru tersebut berfungsi dengan baik atau tidak. Kita akan buat container baru lagi dari image baru tersebut.

docker run -itd --name mycontainer2 -p 502:80 my_new_image:1.0

Lalu buka browser dengan url

http://localhost:502

Jika berhasil tampilannya akan Welcome to nginx!

Demikianlah tutorial Install nginx dan php-fpm 7.3 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.