Cài đặt Nginx Reverse Proxy để triển khai nhiều ứng dụng sử dụng Docker
Để triển khai nhiều ứng dụng trên Docker ngoài việc mapping hoặc expose ra bên ngoài thì chúng ta còn cách khác để triển khai đó là tạo một Reverse Proxy Nginx. Bài viết này mình chia sẻ các bạn làm thế nào để cài đặt một Nginx Reverse Proxy để triển khai nhiều ứng dụng sử dụng Docker.
Chuẩn bị
Máy ảo/VPS hệ điều hành Ubuntu/Debian/Centos. Bạn nào mới bắt đầu thì có thể đăng kí một tài khoản trên Digital Ocean để vọc. Hiện tai đang khuyến mãi tặng $200 dùng trong 60 ngày. Cài Docker
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker
sudo usermod -aG docker ${USER}
su - ${USER}
sudo usermod -aG docker username
Docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
Cài đặt Nginx reverse proxy container
mkdir reverse-proxy && cd reverse-proxy
docker network create net
Tạo file cấu hình nginx
nano docker-compose.yml
version: "3.7"
services:
reverse-proxy:
image: "jwilder/nginx-proxy:latest"
container_name: "reverse-proxy"
volumes:
- "html:/usr/share/nginx/html"
- "dhparam:/etc/nginx/dhparam"
- "vhost:/etc/nginx/vhost.d"
- "certs:/etc/nginx/certs"
- "/run/docker.sock:/tmp/docker.sock:ro"
restart: "always"
networks:
- "net"
ports:
- "80:80"
- "443:443"
letsencrypt:
image: "jrcs/letsencrypt-nginx-proxy-companion:latest"
container_name: "letsencrypt-helper"
volumes:
- "html:/usr/share/nginx/html"
- "dhparam:/etc/nginx/dhparam"
- "vhost:/etc/nginx/vhost.d"
- "certs:/etc/nginx/certs"
- "/run/docker.sock:/var/run/docker.sock:ro"
environment:
NGINX_PROXY_CONTAINER: "reverse-proxy"
DEFAULT_EMAIL: "[email protected]"
restart: "always"
depends_on:
- "reverse-proxy"
networks:
- "net"
volumes:
certs:
html:
vhost:
dhparam:
networks:
net:
external: true
Test Nginx reverse proxy
docker run --rm --name nginx-dummy -e VIRTUAL_HOST=nginx-dummy.kienletv.com -e LETSENCRYPT_HOST=nginx-dummy.kienletv.com -e VIRTUAL_PORT=80 --network net -d nginx:latest
- VIRTUAL_HOST: tên host reverse proxy - LETSENCRYPT_HOST: tên host để cấp certificates
docker stop nginx-dummy
docker-compose down
Chạy ứng dụng khác với reverse proxy
Triển khai ứng dụng nextcloud
Ở đây mình triển khai lần lượt 2 container với 2 domain: nextcloud0.kienletv.com và nextcloud1.kienletv.com
Chạy ứng dụng 1
docker run --name nextcloud1 --network net -e VIRTUAL_HOST="nextcloud0.kienletv.com" -e LETSENCRYPT_HOST="nextcloud0.kienletv.com" -d nextcloud:19.0.2
Chạy ứng dụng 2
docker run --name nextcloud2 --network net -e VIRTUAL_HOST="nextcloud1.kienletv.com" -e LETSENCRYPT_HOST="nextcloud1.kienletv.com" -d nextcloud:19.0.2
Kiểm tra bằng cách vào 2 ứng dụng với 2 domain khác nhau. Các bạn triển khai nhiều ứng dụng bằng cách thay thế các biến VIRTUAL_HOST, LETSENCRYPT_HOST ở câu lệnh trên
Mời cà phê
Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé.
Bạn có thể ủng hộ mình qua:
Mời cà phê
Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé.
Bạn có thể ủng hộ mình qua:
Ví MoMo
Paypal
Cám ơn mọi người!
Không có bình luận