Indonesia Website Awards
Indonesia Website Awards

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
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
/root/myDocker.

mkdir /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
mkdir /root/myDocker/nginx

vim /root/myDocker/nginx/nginx.conf
vim /root/myDocker/nginx/nginx.conf

Masukan konfigurasi ini ke file nginx.conf :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
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; }
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
mkdir /root/myDocker/nginx/conf.d

vim /root/myDocker/nginx/conf.d/default.conf
vim /root/myDocker/nginx/conf.d/default.conf

Masukan konfigurasi ini ke file default.conf :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
server {
listen 80;
server_name yourIpAddress;
root /var/www;
location / {
index index.html;
}
}
server { listen 80; server_name yourIpAddress; root /var/www; location / { index index.html; } }
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 :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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
    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
    --network networkName container docker akan berjalan di jaringan yang telah kita buat di step 1.
  • --publish 80:80
    --publish 80:80 dan
    --publish 443:443
    --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
    --publish 8080:80 .
  • --volume ~/myDocker/nginx/nginx.conf:/etc/nginx/nginx.conf
    --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
    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/
/root/myDocker/ :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd /root/myDocker
vim Dockerfile
#Masukkan ini kedalam Dockerfile
FROM nginx:1.18-alpine
RUN apk add certbot certbot-nginx
RUN mkdir /etc/letsencrypt
cd /root/myDocker vim Dockerfile #Masukkan ini kedalam Dockerfile FROM nginx:1.18-alpine RUN apk add certbot certbot-nginx RUN mkdir /etc/letsencrypt
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 .
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 .
docker build -t lukman134/nginx-certbot .

Jika kita tidak menyertakan

tagName
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
docker rm -f containerName lalu kita buat container ulang dengan menjalankan perintah ini :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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]
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 😀

 

Baca Juga :

Lukems

Hanya manusia biasa yang hidup sederhana dan mempunyai keluarga kecil yang bahagia

0 Komentar

Tinggalkan Balasan

Avatar placeholder

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *