Docker Compose를 사용하여 Traefik 2 시작하기

6489 단어 traefikdockertutorial
Docker 컨테이너에서 실행 중인 서비스를 게시하고 보호하기 위해 Traefik을 역방향 프록시로 사용하고 있습니다. 이 블로그 게시물에서는 단일 호스트에서 docker-compose을 사용하여 Traefik 2를 시작하는 방법을 설명합니다.

다른 호스트에서 많은 Traefik 인스턴스를 사용하고 있기 때문에 배포를 더 쉽게 하기 위해 traefik-dockerized이라는 리포지토리를 생성했습니다.

먼저 리포지토리를 복제합니다.

$ git clone https://github.com/cedrichopf/traefik-dockerized.git
Cloning into 'traefik-dockerized'...
$ cd traefik-dockerized


리포지토리를 복제한 후 예제 구성의 복사본을 만듭니다.

$ cp config/traefik.example.yml config/traefik.yml


구성 파일을 엽니다. 다음과 같아야 합니다.

api:
  dashboard: true

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  docker:
    network: proxy

certificatesResolvers:
  letsencrypt:
    acme:
      email: [email protected]
      storage: acme.json
      httpChallenge:
        entryPoint: http


구성 파일은 거의 사용할 준비가 되었습니다. 기본 제공 LetsEncrypt 지원을 사용하려면 인증서 확인자의 이메일 주소를 조정하십시오.

그런 다음 traefik.yml 파일에 구성된 Docker 네트워크를 생성합니다.

$ docker network create proxy
ca0a9fe39b34b9f17d5c5e938e82ce67b4423e151ae5000eee7754e89116cac1


또한 인증서 확인자가 받은 인증서 정보를 저장할 JSON 파일을 만듭니다.

$ touch letsencrypt/acme.json
$ chmod 600 letsencrypt/acme.json


docker-compose.yml 파일은 저장소의 일부이며 모든 Traefik 배포에 대한 일반입니다. docker-compose.override.yml 파일을 만들어 배포에 사용자 지정 구성을 적용합니다.

$ cp override.example.yml docker-compose.override.yml


마지막으로 Docker 이미지를 가져오고 Traefik 인스턴스를 시작합니다.

$ docker-compose pull
Pulling traefik ... done
$ docker-compose up -d
Creating traefik_traefik_1 ... done


서비스 예



이제 docker-compose를 사용하여 샘플 서비스를 배포하여 Traefik 설정을 테스트할 수 있습니다. 다음 예제에서는 레이블 섹션에서 Traefik 서비스 구성을 사용하여 Nginx 컨테이너를 배포합니다.

참고: 이 예를 사용하려면 시스템 환경과 일치하도록 호스트 이름example.com을 변경해야 합니다. 서비스를 검색하기 위해 Traefik에서 사용하는 도커 네트워크를 변경한 경우 네트워크도 변경해야 합니다.

version: "3.7"

services:
  nginx:
    image: nginx:latest
    networks:
      - proxy
    labels:
      # Traefik configuration, Hostname needs to be changed
      - traefik.http.routers.nginx-http.rule=Host(`example.com`)
      - traefik.http.routers.nginx-http.entrypoints=http
      - traefik.http.routers.nginx-http.middlewares=redirect
      - traefik.http.routers.nginx-https.rule=Host(`example.com`)
      - traefik.http.routers.nginx-https.entrypoints=https
      - traefik.http.routers.nginx-https.tls=true
      - traefik.http.routers.nginx-https.tls.certresolver=letsencrypt
      - traefik.http.services.nginx.loadbalancer.server.port=80
      - traefik.http.middlewares.redirect.redirectscheme.scheme=https

networks:
  proxy:
    external: true


매니페스트에서 볼 수 있듯이 Traefik은 레이블 섹션에 정의된 속성을 사용하여 서비스에 대한 액세스를 구성합니다. 이 예에서는 2개의 라우터(http 및 https)를 만들고 포트 80에서 Nginx 서비스로 요청을 전달합니다. 또한 http 라우터는 리디렉션 미들웨어를 사용하여 http에서 https로 모든 요청을 리디렉션합니다. 연결을 보호하기 위해 letsencrypt 인증서 확인자를 사용하여 인증서를 제공합니다.

예시를 배포하려면 다음 명령을 실행합니다.

$ docker-compose up -d
Creating example-service_nginx_1 ... done


마지막으로 구성된 경로에서 브라우저를 열고 Nginx 시작 페이지를 확인합니다.

좋은 웹페이지 즐겨찾기