Docker Reverse Proxy Menggunakan Traefik
Jika sebelumnya sudah pernah dengar Reverse Proxy terutama pada Nginx Reverse Proxy, maka kali ini saya akan bahas mengenai Traefik Reverse Proxy. Traefik ini lebih ditujukan pada docker, container.
Daftar Isi:
- Prasyarat
- Buat File
docker-compose.yml
- Edit File
docker-compose.yml
ataudocker-compose-traefik-nginx.yml
- Running file docker-compose
Prasyarat:
- Docker Engine
- Docker Compose
Buat File docker-compose.yml
Langkah pertama buat file docker-compose.yml
, tapi kali ini nama file yang saya gunakan adalah docker-compose-traefik-nginx.yml
, sehingga ketika running nanti harus lebih spesifik nama filenya.
mkdir traefik
cd traefik/
touch docker-compose-traefik-nginx.yml
Edit File docker-compose.yml
atau docker-compose-traefik-nginx.yml
Edit file docker-compose-traefik-nginx.yml
dan kemudian isi file dengan:
version: "3.3"
services:
traefik:
container_name: traefik
image: "traefik:v2.5"
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --log.level=DEBUG
- --certificatesresolvers.leresolver.acme.httpchallenge=true
- --certificatesresolvers.leresolver.acme.email=email@example.com
- --certificatesresolvers.leresolver.acme.storage=./acme.json
- --certificatesresolvers.leresolver.acme.httpchallenge.entrypoint=web
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "$TRAEFIKV2DIR/acme/acme.json:/acme.json"
labels:
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web"
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
networks:
- traefik_webgateway
logging:
driver: "json-file"
options:
max-size: "100m"
nginx:
container_name: nginx
image: nginx:latest
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=Host(`nginx.wibiharto.web.id`)"
- "traefik.http.routers.nginx.entrypoints=websecure"
- "traefik.http.services.nginx.loadbalancer.server.port=80"
- "traefik.http.routers.nginx.service=nginx"
- "traefik.http.routers.nginx.tls.certresolver=leresolver"
networks:
- traefik_webgateway
networks:
traefik_webgateway:
external: true
pada isian file diatas saya menggunakan networks traefik_webgateway
. Kemudian selain traefik, saya juga running nginx dengan domain nginx.wibiharto.web.id
.
Pada baris --certificatesresolvers.leresolver.acme.email
isikan email yang digunakan untuk letsencrypt nantinya. Selain itu pada Service Nginx, baris traefik.http.services.nginx.loadbalancer.server.port
isikan port default container tersebut, nginx menggunakan default port 80.
Running file docker-compose
Jika file docker compose kalian menggunakan nama docker-compose.yml
, maka tinggal eksekusi perintah berikut.
docker-compose up -d
Tapi jika nama filenya tidak sesuai, gunakan perintah berikut.
docker-compose -f <nama_file>.yml up -d
menjadi.
docker-compose -f docker-compose-traefik-nginx.yml up -d
Silahkan cek hasilnya menggunakan perintah docker ps
. Cek juga domain yang sudah kita konfigurasi tadi, nginx.wibiharto.web.id
seharusnya sudah tersertifikasi letsencrypt juga
Sharing is caring!