
docker-compse.yml 을 생성하고, 공식 Traefik 이미지를 사용하는 reverse-proxy 서비스를 정의합니다.
version: '3'
services:
reverse-proxy:
# 공식 v3 Traefik docker image
image: traefik:v3.1
# 웹 UI를 활성화하고 Traefik이 Docker를 청취하도록 설정
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# Docker 이벤트를 Traefik이 청취할 수 있도록 설정
- /var/run/docker.sock:/var/run/docker.sock
Traefik 기동~
reverse-proxy 시작docker-compose up -d reverse-proxy
브라우저를 열고 http://localhost:8080/api/rawdata로 이동하여 Traefik의 API rawdata를 확인할 수 있습니다. (2단계에서 서비스를 실행한 후 다시 이곳으로 돌아오세요).
다음은 Traefik 인스턴스를 실행한 후, 새로운 서비스를 배포하는 데 필요한 docker-compose.yml 파일에 추가할 내용입니다:
version: '3'
services:
...
whoami:
# A container that exposes an API to show its IP address
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
위의 설정은 whoami를 정의합니다. 이는 배포된 머신에 대한 정보 (예: IP 주소, 호스트 등)를 출력하는 웹 서비스입니다.
whoami 시작docker-compose up -d whoami
http://localhost:8080/api/rawdata로 이동하여 Traefik이 새로운 컨테이너를 자동으로 감지하고 자신의 구성을 업데이트했는지 확인하세요.
Traefik이 새로운 서비스를 감지하면 해당 서비스에 대한 라우트를 생성합니다.
이를 확인하기 위해 curl을 사용할 수 있습니다.
다음 명령을 통해 whoami 서비스를 호출해 보자.
curl -H Host:whoami.docker.localhost http://127.0.0.1
다음 결과를 확인할 수 있다.
Hostname: a656c8ddca6c
IP: 172.27.0.3
#...
다음 명령을 사용하여 whoami 서비스의 인스턴스를 추가로 실행할 수 있습니다.
docker-compose up -d --scale whoami=2
http://localhost:8080/api/rawdata로 이동하여 Traefik이 새로운 컨테이너 인스턴스를 자동으로 감지했는지 확인합니다.
마지막으로, 다음 명령어를 두 번 실행하여 Traefik이 두 인스턴스 간에 로드 밸런싱을 하는지 확인합니다.
curl -H Host:whoami.docker.localhost http://127.0.0.1
Hostname: a656c8ddca6c
IP: 172.27.0.3
#...
Hostname: s458f154e1f1
IP: 172.27.0.4
# ...