Dalam postingan Saya kali ini, Saya akan membahas bagaimana cara install nginx dan certbot di docker. Kenapa Saya menggunakan docker untuk installasi nginx dan certbot itu karena menurut Saya dengan menggunakan docker prosesnya menjadi lebih cepat, setupnya mudah serta simpel. Kita juga dapat menyimpan image yang kita create di hub docker kita. Sebelum kita memulai, pastikan docker sudah terinstall di tempatmu ya. Untuk install docker kalian bisa baca di docker docs – Install docker engine .
Oke , apabila sudah terinstall docker di tempatmu, kita lanjut ke topik utama kita, berikut langkah – langkahnya :
Step 1 – Buat Network Docker
Yang pertama adalah, kita buat network docker terlebih dahulu. Fungsi network ini adalah sebagai penghubung antara container docker nantinya. berikut perintahnya :
docker network create -d bridge networkName
Step 2 – Buat direktori bersama
Saran dari Saya, buatlah direktori bersama untuk menyimpan data – data yang ada kaitannya dengan docker, sebagai contoh saya membuat direktori bernama myDocker di root seperti ini letaknya /root/myDocker
.
mkdir /root/myDocker
Step 3 – Buat direktori nginx dan buat file nginx.conf didalamnya
Selanjutnya, kita buat direktori khusus container nginx dan buatkan file nginx.conf didalamnya, fungsinya adalah, supaya kelak kita bisa dengan mudah memodifikasi file nginx.conf tersebut.
mkdir /root/myDocker/nginx
vim /root/myDocker/nginx/nginx.conf
Masukan konfigurasi ini ke file nginx.conf :
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
Ini hanya contoh file nginx.conf yang bisa kalian gunakan, kalian bisa memodifikasi sesuai kebutuhan kalian.
Step 3 – Buat direktori conf.d dan buat file konfigurasi default.conf
Selanjutnya kita buat direktori conf.d didalam direktori nginx yang telah kita buat di step ke-2 tadi, lalu kita buat juga file konfigurasi default.conf. nantinya kita bisa memanagemen konfigurasi nginx didalam conf.d ini.
mkdir /root/myDocker/nginx/conf.d
vim /root/myDocker/nginx/conf.d/default.conf
Masukan konfigurasi ini ke file default.conf :
server { listen 80; server_name yourIpAddress; root /var/www; location / { index index.html; } }
Ini hanya contoh konfigurasi sederhana, kalian bisa memodifikasi sesuai kebutuhan kalian.
Step 4 – Buat container docker untuk nginx
Selanjutnya kita buat container docker untuk nginx dengan menjalankan :
docker run -itd --name containerName \ --network networkName \ --publish 80:80 \ --publish 443:443 \ --volume ~/myDocker/nginx/nginx.conf:/etc/nginx/nginx.conf \ --volume ~/myDocker/nginx/conf.d:/etc/nginx/conf.d \ --volume /var/www:/var/www \ nginx:1.18-alpine
Penjelasan :
docker run -itd --name containerName
–itd untukmenjalankan docker dengan interactive dan auto-start apabila pc / server reboot, –name containerName untuk memberikan nama container.--network networkName
container docker akan berjalan di jaringan yang telah kita buat di step 1.--publish 80:80
dan--publish 443:443
untuk menentukan penggunaan port antar pc /server kita dengan port images yang terinstal di container. disini kita bisa mengkustom semisal port default nginx yang berjalan di port 80 ingin kita jalankan di port 8080 maka tinggal kita ganti menjadi--publish 8080:80
.--volume ~/myDocker/nginx/nginx.conf:/etc/nginx/nginx.conf
dan –volume lainnya berfungsi untuk menyinkronkan direktori/file antara server kita dengan direktori didalam container docker.nginx:1.18-alpine
adalah image nginx yang Saya gunakan dan Saya install di container docker.
Ya sampai saat ini kita sudah berhasil menginstall nginx di docker, kalian bisa mengeceknya dengan membuka browser dan mengakses server_name atau ip yang kalian konfig di default.conf.
Step 5 – Buat Dockerfile untuk menginstall certbot
Lalu untuk selanjutnya, kita akan menambahkan certbot kedalam nginx docker yang telah kita buat, kita akan menggunakan Dockerfile. sebagai contoh buat Dockerfile didalam /root/myDocker/
:
cd /root/myDocker vim Dockerfile #Masukkan ini kedalam Dockerfile FROM nginx:1.18-alpine RUN apk add certbot certbot-nginx RUN mkdir /etc/letsencrypt
Step 6 – Build Dockerfile
Selanjutnya kita jalankan Dockerfile dengan docker build.
docker build -t yourDockerUser/imageName:tagName .
Proses ini akan membuat images docker baru ( yang sudah terinstall certbot ) yang bisa kita sesuaikan penamaannya , untuk contoh yang Saya buat seperti ini :
docker build -t lukman134/nginx-certbot .
Jika kita tidak menyertakan tagName
, maka docker akan membacanya sebagai image dengan versi yang terupdate (latest).
Step 7 – Hapus container yang sudah di buat di step 1, lalu buat ulang dengan menggunakan image hasil build dari Dockerfile
Setelah berhasil build Dockerfile, kita dapat menggunakan image tersebut, karena container yang kita buat di step 1 sudah tidak berguna ( karena belum ada certbot ) maka kita hapus container tersebut dengan perintah docker rm -f containerName
lalu kita buat container ulang dengan menjalankan perintah ini :
docker run -itd --name containerName \ --network networkName \ --publish 80:80 \ --publish 443:443 \ --volume ~/myDocker/nginx/nginx.conf:/etc/nginx/nginx.conf \ --volume ~/myDocker/nginx/conf.d:/etc/nginx/conf.d \ --volume /var/www:/var/www \ --volume ~/myDocker/nginx/ssl:/etc/ssl \ --volume ~/myDocker/certbot/conf:/etc/letsencrypt \ yourDockerUser/imageName:tagName
Setelah selesai dan tidak ada error, berarti anda sudah berhasil menginstall Nginx dan certbot di docker. Lalu untuk menggunakan certbot nya kalian dapat menjalankannya dengan perintah :
docker exec -ti containerName certbot [command]
Ya , itu langkah – langkah tentang bagaimana cara install nginx dan certbot di docker yang dapat Saya bagikan, Jika ada yang ingin ditanyakan silahkan bertanya di kolom komentar. Semoga artikel ini dapat bermanfaat, Terima kasih 😀