Selamat datang dalam tutorial Docker ini! Sebelum kita mulai merambah ke dunia kontainerisasi, mari kita bahas mengapa Docker dapat menjadi pilihan yang lebih aman daripada tidak menggunakan kontainer. Docker memberikan lapisan isolasi tambahan, yang membatasi akses aplikasi dalam kontainer dan meminimalkan potensi dampak jika terjadi peretasan. Dengan menggunakan Docker, kita dapat mengelola dependensi, mengisolasi lingkungan, dan mengimplementasikan prinsip-prinsip keamanan yang memperkuat aplikasi kita. Mari kita jelajahi keunggulan keamanan Docker dan mengapa ini menjadi pilihan cerdas untuk pengelolaan aplikasi modern
- Instal Docker dengan Command
sudo apt update
sudo apt install docker.io
- Kemudian Reboot server dengan command
Reboot
- Pastikan Docker diaktifkan:
Pastikan layanan Docker diaktifkan dan berjalan. Anda dapat menjalankan perintah berikut:
sudo systemctl start docker
sudo systemctl enable docker
- Buat file index.php dan filelain.php taruh pada directory /var/www/html/ dengan isi
<?php
$id = "Hello, Docker!";
echo $id;
?>
- Buat file dengan nama Dockerfile (tanpa ekstensi) taruh pada directory /var/www/html/ dan isinya seperti berikut:
# Gunakan image PHP versi terbaru
FROM php:latest
# Pindahkan file index.php ke dalam container di direktori /var/www/html/
COPY index.php /var/www/html/
COPY filelain.php /var/www/html/
# Expose port 80 untuk akses web
EXPOSE 80
# Untuk menjalankan user agar tidak root
RUN useradd -ms /bin/bash appuser
USER appuser
# Perintah untuk menjalankan server web saat container dijalankan
CMD ["php", "-S", "0.0.0.0:80", "-t", "/var/www/html/"]
- Buka terminal, pindah ke direktori di mana file Dockerfile dan index.php berada, lalu jalankan perintah berikut untuk membangun Docker image:
docker build -t my-php-app .
- Setelah selesai membangun image, jalankan container dengan perintah:
docker run -p 8080:80 my-php-app
- Jika anda ingin membuat duplikasi pada beberapa web dengan port yang berbeda anda bisa membuat file docker-compose.yml berisi
version: '3'
services:
web:
image: my-php-app
ports:
- "8081:80"
volumes:
- ./uploads_8081:/var/www/html/uploads
web2:
image: my-php-app
ports:
- "8082:80"
volumes:
- ./uploads_8082:/var/www/html/uploads
web3:
image: my-php-app
ports:
- "8083:80"
volumes:
- ./uploads_8083:/var/www/html/uploads
web4:
image: my-php-app
ports:
- "8084:80"
volumes:
- ./uploads_8084:/var/www/html/uploads
web5:
image: my-php-app
ports:
- "8085:80"
volumes:
- ./uploads_8085:/var/www/html/uploads
- kemudian run dengan command
docker-compose up #untuk mematikan docker stop $(docker ps -q)
- setelah itu silahkan check http://ip:8085/
- kemudian pasang domain (disini saya set A Record Ke IP saya)
- Agar visitor mendapatkan port yang berbeda beda set configurasi nginx pada file /etc/nginx/sites-available/load-balancer
upstream myapp {
least_conn;
server localhost:8081;
server localhost:8082;
server localhost:8083;
server localhost:8084;
server localhost:8085;
}
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://myapp;
}
}
- setelah itu aktifkan dengan command
sudo ln -s /etc/nginx/sites-available/load-balancer /etc/nginx/sites-enabled/sudo nginx -t # Memastikan konfigurasi tidak ada kesalahansudo systemctl restart nginx
Note: Jika kalian ada error kalian bisa melakukan unistall docker yang telah kalian install sebelumnya.. dan menginstall kembali dengan command diatas