docker环境下使用treafik实现反向代理 - Go语言中文社区

docker环境下使用treafik实现反向代理


在以前我们一般使用nginx做反向代理来实现在单服务器上部署多服务。

现在随着Docker的流行,现在越来越多开发人员喜欢在单服务器上使用Docker来部署多服务,这样做的好处是显而易见的:资源占用少,系统健壮性更高(崩一个容器不会影响其他容器的运行),省经费(不必为了不同的运行环境而购置多个服务器)等……。

但是nginx和docker的相处不是那么融洽,所以treafik作为天生支持docker的反向代理就诞生了,它还带有负载均衡,支持https等其他诸多优点。treafik官网:https://traefik.io/

so let’s use it

1.目录结构,certs目录是我用来保存https证书用的,并不需要非这么写。
这里写图片描述

2.docker-compose.yml
treafik运行在docker里,docker-compose是它的部署文件,类似于dockerfile但是比它更优

version: '3'

networks:
  traefiknet:
    driver: bridge

services:
  traefik:
    image: traefik:v1.5.4-alpine # 我用的这个版本,treafik的版本是个坑
    command: --api --docker --docker.domain=test.com # Enables the web UI and tells Træfik to listen to docker ( --logLevel=ERROR,INFO) 这里我指定它监听domain为test.com的docker容器,domain配置可以在生成容器时加入--domain test.com实现
    ports:
      - "80:80"     # The HTTP port
      - "443:443"   # The HTTPS port
      - "8080:8080" # The Web UI (enabled by --api) 在treafik部署好后访问8080端口会显示treafik的管理界面
    networks:
      - traefiknet
    labels:
      - "traefik.port=8080"
      - "traefik.frontend.rule=Host:test.cn" # Traefik Web UI monitor treafik管理界面的域名
      - "traefik.backend=test" # Name the Traefik monitor backend
    volumes:
      - /srv/docker/to:/srv/docker/to
      - ./traefik.toml:/etc/traefik/traefik.toml
      - ./certs:/etc/traefik/certs # 因为我把证书存在certs目录下,这条语句视你们情况而定
      - /var/run/docker.sock:/var/run/docker.sock # Listen to the Docker events

3.treafik的管理界面,我把里面的一些隐私信息遮盖掉了。
左边黄色的是配置的监听域名,也可以添加路径前缀来监听指定的访问请求,下面的Backend名对应右边的绿色标签名.
右边绿色的是对应的docker名和后台地址,这个一般是treafik自己生成的
这里写图片描述

4.treafik.toml
treafik的配置文件

################################################################
# Global configuration
################################################################
defaultEntryPoints = ["http", "https"]
################################################################
# Traefik log
################################################################
logLevel = "INFO"
[traefikLog]
  filePath = "/srv/docker/to/traefik.log"
[accessLog]
  filePath = "/srv/docker/to/access.log"
################################################################
# Entrypoints configuration
################################################################
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
      certFile = "/etc/traefik/certs/test.com/test.crt"
      keyFile = "/etc/traefik/certs/test.com/test.key" # 对应第步的证书文件映射设置路径
  [entryPoints.traefik]
   address=":8080"
################################################################
# API and dashboard configuration
################################################################
[api]
  entryPoint = "traefik"
  dashboard = true
################################################################
# Ping configuration
################################################################
[ping]
  entryPoint = "traefik"
################################################################
# Docker configuration backend
################################################################
[docker]
  endpoint = "unix:///var/run/docker.sock"
  domain = ""
  exposedByDefault = true

5.至此编码部分就结束了,在treafik所在的目录下输入该命令运行docker

docker-compose -f docker-compose.yml up -d
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Cooldiok/article/details/82390676
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 10:39:53
  • 阅读 ( 1929 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢