Traefik正在使用traefik.enable = true设置忽略docker

您期望看到什么?

我期望在docker组成wordpress堆栈时看到一个新的前端和后端.

您看到了什么?

没有新的前端或后端. 2条日志行= level = info msg =“为提供商docker跳过相同的配置”

即使在标签中设置了traefik.enable = true,也将看到“过滤禁用的容器/ testEXAMPLEcom_wordpress_1”.

traefik版本的输出:

Traefik version v1.7.11 built on 2019-04-26_08:42:33AM

您的环境是什么?组态?

cat traefik.toml
#debug = true

logLevel = "INFO" #DEBUG,INFO,WARN,ERROR,FATAL,PANIC
InsecureSkipVerify = true
defaultEntryPoints = ["https","http"]

# WEB interface of Traefik - it will show web page with overview of frontend and backend configurations
[api]
  entryPoint = "traefik"
  dashboard = true
  address = ":8080"

# Force HTTPS
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"

  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]
      [entryPoints.https.redirect]
        permanent=true
        regex = "^https://www.(.*)"
        replacement = "https://$1"

[retry]

[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true
exposedByDefault = false

# Let's encrypt configuration
[acme]
email = "japayton42@gmail.com" #any email id will work
storage="/etc/traefik/acme/acme.json"
entryPoint = "https"
acmeLogging=true
onDemand = false #create certificate when container is created
onHostRule = true
caServer = "https://acme-v02.api.letsencrypt.org/directory"
[acme.dnsChallenge]
  provider = "cloudflare"
  delayBeforeCheck = 3
cat docker-compose.yml
version: "3.6"
services:

  traefik:
    hostname: traefik
    image: traefik:latest
    container_name: traefik
    restart: always
    domainname: ${DOMAINNAME}
    networks:
      - default
      - traefik_proxy
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    environment:
      - CF_API_EMAIL=${CLOUDFLARE_EMAIL}
      - CF_API_KEY=${CLOUDFLARE_API_KEY}
    labels:
      - "traefik.enable=true"
      - "traefik.backend=traefik"
      - "traefik.frontend.rule=Host:${DOMAINNAME}; PathPrefixStrip: /traefik"
      - "traefik.port=8080"
      - "traefik.docker.network=traefik_proxy"
      - "traefik.frontend.headers.SSLRedirect=true"
      - "traefik.frontend.headers.STSSeconds=0"
      - "traefik.frontend.headers.browserXSSFilter=true"
      - "traefik.frontend.headers.contentTypeNosniff=true"
      - "traefik.frontend.headers.forceSTSHeader=false"
      - "traefik.frontend.headers.SSLHost=host.EXAMPLE.com"
      - "traefik.frontend.headers.STSIncludeSubdomains=false"
      - "traefik.frontend.headers.STSPreload=false"
      - "traefik.frontend.headers.frameDeny=true"
      - "traefik.frontend.auth.basic.users=${HTTP_USERNAME}:${HTTP_PASSWORD}"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ${USERDIR}/traefik:/etc/traefik
      - ${USERDIR}/shared:/shared


networks:
  traefik_proxy:
    external:
      name: traefik_proxy
  default:
    driver: bridge
cat docker-compose.yml
version: '3.3'

services:
  db:
    image: mysql:latest
    volumes:
      - ./db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    labels:
      - traefik.enable=false
    networks:
      - db
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    volumes:
      - ./app:/var/www
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    labels:
      - "traefik.enabled=true"
      - "traefik.domain=test.EXAMPLE.com"
      - "traefik.backend=test.EXAMPLE.com"
      - "traefik.frontend.rule=Host:www.test.EXAMPLE.com,test.EXAMPLE.com"
      - "traefik.docker.network=traefik_proxy"
      - "traefik.port=80"
      - "traefik.frontend.headers.SSLRedirect=true"
      - "traefik.frontend.headers.STSSeconds=0"
      - "traefik.frontend.headers.browserXSSFilter=true"
      - "traefik.frontend.headers.contentTypeNosniff=true"
      - "traefik.frontend.headers.forceSTSHeader=false"
      - "traefik.frontend.headers.SSLHost=EXAMPLE.com"
      - "traefik.frontend.headers.STSIncludeSubdomains=false"
      - "traefik.frontend.headers.STSPreload=false"
      - "traefik.frontend.headers.frameDeny=true"
    networks:
      - traefik_proxy
      - db
networks:
  traefik_proxy:
    external: true
  db:
    external: false

如果适用,请将日志输出粘贴到DEBUG级别

Attaching to traefik
traefik    | time="2019-05-04T00:29:34Z" level=info msg="Using TOML configuration file /etc/traefik/traefik.toml"
traefik    | time="2019-05-04T00:29:34Z" level=info msg="Traefik version v1.7.11 built on 2019-04-26_08:42:33AM"
traefik    | time="2019-05-04T00:29:34Z" level=debug msg="Global configuration loaded {\"LifeCycle\":{\"RequestAcceptGraceTimeout\":0,\"GraceTimeOut\":10000000000},\"GraceTimeOut\":0,\"Debug\":false,\"CheckNewVersion\":true,\"SendAnonymousUsage\":false,\"AccessLogsFile\":\"\",\"AccessLog\":null,\"TraefikLogsFile\":\"\",\"TraefikLog\":null,\"Tracing\":null,\"LogLevel\":\"DEBUG\",\"EntryPoints\":{\"http\":{\"Address\":\":80\",\"TLS\":null,\"Redirect\":{\"entryPoint\":\"https\"},\"Auth\":null,\"WhitelistSourceRange\":null,\"WhiteList\":null,\"Compress\":false,\"ProxyProtocol\":null,\"ForwardedHeaders\":{\"Insecure\":true,\"TrustedIPs\":null}},\"https\":{\"Address\":\":443\",\"TLS\":{\"MinVersion\":\"\",\"CipherSuites\":null,\"Certificates\":null,\"ClientCAFiles\":null,\"ClientCA\":{\"Files\":null,\"Optional\":false},\"DefaultCertificate\":null,\"SniStrict\":false},\"Redirect\":{\"regex\":\"^https://www.(.*)\",\"replacement\":\"https://$1\",\"permanent\":true},\"traefik\":{\"Address\":\":8080\",\"Redirect\":null,\"TrustedIPs\":null}}},\"Cluster\":null,\"Constraints\":[],\"ACME\":{\"Email\":\"EXAMPLE@gmail.com\",\"Domains\":null,\"Storage\":\"/etc/traefik/acme/acme.json\",\"StorageFile\":\"\",\"OnDemand\":false,\"OnHostRule\":true,\"CAServer\":\"https://acme-v02.api.letsencrypt.org/directory\",\"EntryPoint\":\"https\",\"KeyType\":\"\",\"DNSChallenge\":{\"Provider\":\"cloudflare\",\"DelayBeforeCheck\":3000000000,\"Resolvers\":null,\"DisablePropagationCheck\":false},\"HTTPChallenge\":null,\"TLSChallenge\":null,\"DNSProvider\":\"\",\"DelayDontCheckDNS\":0,\"ACMELogging\":true,\"OverrideCertificates\":false,\"TLSConfig\":null},\"DefaultEntryPoints\":[\"https\",\"http\"],\"ProvidersThrottleDuration\":2000000000,\"MaxIdleConnsPerHost\":200,\"IdleTimeout\":0,\"InsecureSkipVerify\":true,\"RootCAs\":null,\"Retry\":{\"Attempts\":0},\"HealthCheck\":{\"Interval\":30000000000},\"RespondingTimeouts\":null,\"ForwardingTimeouts\":null,\"AllowMinWeightZero\":false,\"KeepTrailingSlash\":false,\"Web\":null,\"Docker\":{\"Watch\":true,\"Filename\":\"\",\"Constraints\":null,\"Trace\":false,\"TemplateVersion\":2,\"DebugLogGeneratedTemplate\":false,\"Endpoint\":\"unix:///var/run/docker.sock\",\"Domain\":\"\",\"ExposedByDefault\":false,\"UseBindPortIP\":false,\"SwarmMode\":false,\"Network\":\"\",\"SwarmModeRefreshSeconds\":15},\"File\":null,\"Marathon\":null,\"Consul\":null,\"ConsulCatalog\":null,\"Etcd\":null,\"Zookeeper\":null,\"Boltdb\":null,\"Kubernetes\":null,\"Mesos\":null,\"Eureka\":null,\"ECS\":null,\"Rancher\":null,\"DynamoDB\":null,\"ServiceFabric\":null,\"Rest\":null,\"API\":{\"EntryPoint\":\"traefik\",\"Dashboard\":true,\"CurrentConfigurations\":null,\"Statistics\":null},\"Metrics\":null,\"Ping\":null,\"HostResolver\":null}"
traefik    | time="2019-05-04T00:29:34Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://docs.traefik.io/basics/#collected-data\n"
traefik    | time="2019-05-04T00:29:34Z" level=debug msg="Setting Acme Certificate store from Entrypoint: https"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Preparing server traefik &{Address::8080 TLS:<nil> Redirect:<nil> Auth:<nil> WhitelistSourceRange:[] WhiteList:<nil> Compress:false ProxyProtocol:<nil> ForwardedHeaders:0xc000376be0} with readTimeout=0s writeTimeout=0s idleTimeout=3m0s"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Creating entry point redirect http -> https"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Creating regex redirect https -> ^https://www.(.*) -> https://$1"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Preparing server http &{Address::80 TLS:<nil> Redirect:0xc00019b500 Auth:<nil> WhitelistSourceRange:[] WhiteList:<nil> Compress:false ProxyProtocol:<nil> ForwardedHeaders:0xc000376c00} with readTimeout=0s writeTimeout=0s idleTimeout=3m0s"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Creating entry point redirect http -> https"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Creating regex redirect https -> ^https://www.(.*) -> https://$1"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Preparing server https &{Address::443 TLS:0xc00042aab0 Redirect:0xc00019b680 Auth:<nil> WhitelistSourceRange:[] WhiteList:<nil> Compress:false ProxyProtocol:<nil> ForwardedHeaders:0xc000376ba0} with readTimeout=0s writeTimeout=0s idleTimeout=3m0s"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Starting server on :8080"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Starting server on :80"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Starting provider configuration.ProviderAggregator {}"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Starting server on :443"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Starting provider *docker.Provider {\"Watch\":true,\"SwarmModeRefreshSeconds\":15}"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Starting provider *acme.Provider {\"Email\":\"EXAMPLE@gmail.com\",\"Store\":{}}"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Testing certificate renew..."
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Configuration received from provider ACME: {}"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Provider connection established with docker 18.09.5 (API 1.39)"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Filtering disabled container /traefik"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Configuration received from provider docker: {}"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Adding certificate for domain(s) host.EXAMPLE.com"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Server configuration reloaded on :80"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Server configuration reloaded on :443"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Server configuration reloaded on :8080"
traefik    | time="2019-05-04T00:29:35Z" level=debug msg="Adding certificate for domain(s) host.EXAMPLE.com"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Server configuration reloaded on :8080"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Server configuration reloaded on :80"
traefik    | time="2019-05-04T00:29:35Z" level=info msg="Server configuration reloaded on :443"
traefik    | time="2019-05-04T00:29:49Z" level=debug msg="Provider event received {Status:start ID:58b2b12336a7488012b68fed21f90476a1e791f4aa17fff7bd266ee9dfbe7a68 From:mysql:latest Type:container Action:start Actor:{ID:58b2b12336a7488012b68fed21f90476a1e791f4aa17fff7bd266ee9dfbe7a68 Attributes:map[image:mysql:latest com.docker.compose.config-hash:f4e61702252003fcfa77f925b989f7ea4933faa6e0735d189d265eabcb5fa799 com.docker.compose.container-number:1 com.docker.compose.service:db com.docker.compose.version:1.24.0 name:testEXAMPLEcom_db_1 traefik.enable:false com.docker.compose.oneoff:False com.docker.compose.project:testEXAMPLEcom]} Scope:local Time:1556929789 TimeNano:1556929789841010516}"
traefik    | time="2019-05-04T00:29:49Z" level=debug msg="Filtering disabled container /testEXAMPLEcom_db_1"
traefik    | time="2019-05-04T00:29:49Z" level=debug msg="Filtering disabled container /traefik"
traefik    | time="2019-05-04T00:29:49Z" level=debug msg="Configuration received from provider docker: {}"
traefik    | time="2019-05-04T00:29:49Z" level=info msg="Skipping same configuration for provider docker"
traefik    | time="2019-05-04T00:29:50Z" level=debug msg="Provider event received {Status:start ID:6d816029188e7a2ff7b7d37fec254e21424cb3e2f69b42c81638d40d56d818f3 From:wordpress:latest Type:container Action:start Actor:{ID:6d816029188e7a2ff7b7d37fec254e21424cb3e2f69b42c81638d40d56d818f3 Attributes:map[com.docker.compose.version:1.24.0 traefik.docker.network:traefik_proxy traefik.domain:test.EXAMPLE.com traefik.enabled:true traefik.frontend.headers.SSLHost:EXAMPLE.com traefik.frontend.headers.browserXSSFilter:true com.docker.compose.container-number:1 traefik.frontend.headers.STSPreload:false traefik.frontend.headers.STSSeconds:0 traefik.frontend.headers.contentTypeNosniff:true traefik.frontend.headers.forceSTSHeader:false com.docker.compose.oneoff:False com.docker.compose.service:wordpress traefik.frontend.headers.SSLRedirect:true traefik.frontend.rule:Host:www.test.EXAMPLE.com,test.EXAMPLE.com traefik.port:80 com.docker.compose.config-hash:3e163655e60a2111f256d3abc3289244f21676737888f7f4340cd543d82300d0 com.docker.compose.project:testEXAMPLEcom image:wordpress:latest name:testEXAMPLEcom_wordpress_1 traefik.frontend.headers.STSIncludeSubdomains:false traefik.frontend.headers.frameDeny:true]} Scope:local Time:1556929790 TimeNano:1556929790976253470}"
traefik    | time="2019-05-04T00:29:50Z" level=debug msg="Filtering disabled container /testEXAMPLEcom_wordpress_1"
traefik    | time="2019-05-04T00:29:50Z" level=debug msg="Filtering disabled container /testEXAMPLEcom_db_1"
traefik    | time="2019-05-04T00:29:50Z" level=debug msg="Filtering disabled container /traefik"
traefik    | time="2019-05-04T00:29:50Z" level=debug msg="Configuration received from provider docker: {}"
traefik    | time="2019-05-04T00:29:50Z" level=info msg="Skipping same configuration for provider docker"
最佳答案
我正在使用traefik.enabled而不是traefik.enable

在发布之前,我尝试了一个星期,

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读8.8k次,点赞2次,收藏7次。本文介绍Docker Compose的网络的配置。_docker compose 网络配置
文章浏览阅读1.5w次,点赞7次,收藏76次。原网提供的教程需要先刷系统到U盘,再把U盘的系统转移到emmc,但是我下面提供的镜像不需要此操作,注意区分。双头USB线一根(买或者自己做,网上有教程);电脑一台;镊子或者别针(或者其他导电的东西,用来短接主板);螺丝刀,电吹风(加热背胶更好撕);U盘一个(刷机和扩展玩客云硬盘容量都用得上);下面这些链接里面的资源下载备用。#镜像地址:https://www.aliyundrive.com/s/NXjbaKC3Hyq提取码: 5i7a。_玩客云 armbian
文章浏览阅读940次,点赞20次,收藏20次。通过 docker run 命令创建一个新的容器。
文章浏览阅读1k次,点赞20次,收藏20次。Podman 是一个开源的容器运行时项目,可在大多数 Linux平台上使用。Podman提供与Docker 非常相似的功能。Podman 提供了一个与 Docker 兼容的 CLI 工具(命令行界面),可以这样说,会使用 docker 基本就会使用 podman。_podman 替代
文章浏览阅读2.1k次。请注意,这些命令需要在 Docker 主机上执行,并且需要有相应的权限才能访问容器的日志文件。确保你有足够的权限来执行这些命令,或者在以管理员身份运行命令。此外,还要注意这些命令可能会清空所有容器的日志文件,包括正在运行的和已经停止的容器。如果只想清空特定容器的日志文件,可以根据需要修改命令。删除容器中netcore控制台存储到docker日志记录。_docker清空日志命令
文章浏览阅读1.1k次,点赞37次,收藏40次。nacos搭建集群连接mysql实现nginx负载均衡实现讲解。_niginx nacos 集群实现负载均衡
文章浏览阅读3.5k次,点赞35次,收藏36次。Docker 是一种容器引擎,可以在容器内运行一段代码。Docker 镜像是在任何地方运行您的应用程序而无需担心应用程序依赖性的方式。要构建镜像,docker 使用一个名为 Dockerfile 的文件。Dockerfile 是一个包含许多指令(RUN、COPY、EXPOSE 等)的文件。成功执行这些命令后,docker 将创建一个镜像供我们在任何地方使用。
文章浏览阅读2.6k次。2.即使在Dockerfile中换源,但在bulid过程中,依然可以注意到连接的是bebian官方源,因为debian 12改了,默认不使用/etc/apt/sources.list文件,这个文件初始是空的,真正的仓库配置在 /etc/apt/sources.list.d/ 目录下,故,修改源需要用RUN rm -rf /etc/apt/sources.list.d/*给每个pip install后面都加上-i https://pypi.tuna.tsinghua.edu.cn/simple。_error: failed to solve: process "/bin/sh -c yum makecache" did not complete
文章浏览阅读9.7k次,点赞2次,收藏4次。嗨,各位猫头虎博主的小伙伴们!。本文将详细分析该问题的根本原因、解决方法以及如何避免类似的状况。让我们一起来解决这个Bug吧!在云原生应用开发中,Docker是不可或缺的工具,但在使用过程中会遇到各种问题,OCI runtime create失败就是其中之一。本文通过深入分析问题的原因,提供了解决方法和避免类似问题的建议。希望本文能帮助您更好地理解和应对这个常见的Bug。_error response from daemon: oci runtime create failed: container_linux.go:34
文章浏览阅读2.2k次,点赞67次,收藏44次。[Docker实战] 旭日X3派上Docker Openwrt +Samba 实现局域网NAS && 开启AP模式
文章浏览阅读1k次,点赞52次,收藏38次。Docker的运行,依赖linux的环境,官方提供了Docker Desktop for Windows,但是它需要安装Hyper-V,Hyper-V是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。安装过程如果出现超时,不要灰心,多试几次,总会成功的。执行完毕后会重启,在重启的过程中进行安装。此命令省略了镜像版本和运行参数,docker使用latest作为版本,即最新版本。从hello world的例子中,也可以体验到,docker实例的运行是非常快的。
文章浏览阅读3.6k次,点赞77次,收藏74次。【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全的详细讲解
文章浏览阅读1w次。要删除已存在的 Docker 镜像,您可以使用docker rmi命令。以下是完整的流程。_docker 删除镜像
文章浏览阅读3.3k次。当安装好docker-compose并添加执行权限后,执行命令docker-compose 相关命令时出现 -bash: /usr/local/bin/docker-compose: 无法执行二进制文件。应该是安装包有问题,网上找了几种重新安装方法途径,还是会出现这个问题,最终找到一种可靠重新安装的解决方法,原文。2.从Docker官方网站下载Docker Compose最新版本的二进制文件(下载稍慢)3.授予Docker Compose二进制文件执行权限。1.先卸载Docker Compose的旧版本。_-bash: /usr/local/bin/docker-compose: cannot execute binary file
文章浏览阅读1.1k次。备注:Mysql5.7+ password字段 已改成 authentication_string字段。#备注:Mysql8.0修改密码方式已有变化(此处是个坑,需要注意)#设置完密码策略后重新输入修改命令,更改后的密码为123456。java默认安装路径/usr/lib/jvm/;#进入/etc/profile 配置文件。#查看正在使用的MySQL repo。#验证开启的8080端口是否生效。#验证开启的8080端口是否生效。#执行命令来开启8080端口。#先把root的旧密码置空。_yum install -y java 安装在什么目录
文章浏览阅读1.9k次。Windows11下清理Docker Desktop与wsl的C盘空间占用_wsl清理缓存
文章浏览阅读8.5k次,点赞2次,收藏20次。本机想要启用gpu加速计算,需要由一张多余的nVidia显卡。需要提前禁用nouveau:lsmod | grep nouveau没有输出即禁用了需要安装1、显卡驱动、2、cuda库(安装cuda会自动安装显卡驱动)3、cudnn(深度神经网络的GPU加速库,需要神经网络则安否则可以不安)安装完成后,可以运行nvidia-smi查看GPU设备的状态。_docker gpu
文章浏览阅读6k次,点赞14次,收藏39次。1.Dockerfile命令初识,CMD...;2.idea配置docker,图形化界面;3.编写Dockerfile把jar包制作成镜像,并用idea一键生成和启动容器;4.在Linux中测试,在宿主机用swagger进行测试;_springboot dockerfile
文章浏览阅读1k次,点赞2次,收藏2次。截止目前,Redis 的最新稳定版本是 6.2.6。这个版本在可读性、性能和稳定性方面进行了改进,并增加了一些新的命令和功能。_docker redis配置文件
文章浏览阅读1.5k次,点赞34次,收藏35次。使用上面的Cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到我们火狐浏览器界面,这样一个公网地址且可以远程访问就创建好了,使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网进行远程访问!上面在本地成功部署了FireFox 火狐浏览器,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤。