Traefik 使用自有 SSL 证书

原始帖子在此处

带有 SSL 证书的 Traefik docker-compose.yml 配置示例

以下是使用现有 SSL 证书的 Traefik docker-compose.yml 配置示例。在此示例中,我们将利用预先存在的证书和私钥文件。

创建docker-compose.yml文件

version: '3.8'

services:
  traefik:
    image: traefik:v2.9
    container_name: traefik
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./certs:/certs
      - /var/run/docker.sock:/var/run/docker.sock
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker=true
      - --providers.docker.network=web
      - --api.dashboard=true
      - --log.level=INFO
      - --certificatesresolvers.myresolver.acme.tlschallenge=true
      - --certificatesresolvers.myresolver.acme.email=your-email@example.com
      - --certificatesresolvers.myresolver.acme.storage=/acme.json
      - --tls.certificates.0.certfile=/certs/your-certificate.crt
      - --tls.certificates.0.keyfile=/certs/your-private-key.key
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.api.rule=Host(`traefik.yourdomain.com`)"
      - "traefik.http.routers.api.service=api@internal"
      - "traefik.http.routers.api.tls=true"
      - "traefik.http.routers.api.tls.certresolver=myresolver"
    networks:
      - web

networks:
  web:
    external: false

解释

  • 命令:
  • --entrypoints.web.address=:80:定义端口 80 上的 HTTP 入口点。
  • --entrypoints.websecure.address=:443:定义端口 443 上的 HTTPS 入口点。
  • --providers.docker=true:启用Docker 作为服务提供商。
  • --providers.docker.network=web:使用 web 网络提供 Docker 服务。
  • --api.dashboard=true:启用 Traefik 仪表板。
  • --log.level=INFO:将日志级别设置为 INFO。
  • --certificatesresolvers.myresolver.acme.tlschallenge=true:使用 TLS-ALPN-01 质询启用 ACME(可选,如果不使用可以注释掉)。
  • --certificatesresolvers.myresolver.acme.email=your-email@example.com:ACME 的电子邮件(可选,如果不使用可以注释掉)。
  • --certificatesresolvers.myresolver.acme.storage=/acme.json:指定 ACME 存储位置(可选,如果不使用可以注释掉)。
  • --tls.certificates.0.certfile=/certs/your-certificate.crt:您的证书文件的路径。
  • --tls.certificates.0.keyfile=/certs/your-private-key.key:您的私钥文件的路径。
  • 标签:
  • traefik.enable=true:为此服务启用 Traefik。
  • traefik.http.routers.api.rule=Host(traefik.yourdomain.com):为 API 路由器定义规则。
  • traefik.http.routers.api.service=api@internal:将 API 路由器定向到 Traefik 的内部服务。
  • traefik.http.routers.api.tls=true:为 API 路由器启用 TLS。
  • traefik.http.routers.api.tls.certresolver=myresolver:使用定义的证书解析器。
  • 确保您的文件夹结构如下:

    .
    ├── docker-compose.yml
    └── certs
        ├── your-certificate.crt
        └── your-private-key.key

    启动 Traefik

    拥有所有必需的文件后,使用以下命令启动 Traefik:

    docker-compose up -d

    Traefik 现在将运行并使用通过命令和标签提供的配置的 SSL 证书。

    规范网址

    欲了解更详细信息,请访问我博客上的原始帖子。