docker swarm模式使用traefik部署服務

  1. 初始化一個swarm集羣, 並把當前主機設置爲swarm manage

docker swarm init

2.如果想讓其它機器加入該集羣,可以執行以下命令(本例未使用)

docker swarm join-token worker    可以輸出加入該集羣並作爲worker角色的命令,如下:
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4vr9acar13e6cbvogs3ptir8fz55jubdkjzyi4u2vljy2i38t8-b94ezwkgbbmt12opnqdmaqrcg 192.168.2.63:2377

3.創建一個docker swarm network, traefik反向代理和我們web服務都要用這個network

docker network create --driver=overlay test-traefik --attachable

4.創建trafik反向代理service

在swarm的manager機器上執行以下命令(具體參數設置可參考:https://docs.traefik.io/user-guide/swarm-mode/)

docker service create    \
--name traefik     \
--constraint=node.role==manager     \
--publish 80:80 --publish 8080:8080     
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock     
--network test-traefik     traefik     
--docker     
--docker.swarmmode     
--docker.domain=traefik     
--docker.watch     
--web

啓動後,可以通過http://{manager-ip}:8080/ 來訪問trafik的web監控界面,可以動態看到反向代理的配置


5.編輯compose-file

vim nginx.yaml
version: '3'
services:
  web:
    image: nginx
    networks:
    - "test-traefik"
    deploy:
      labels:
      - "traefik.frontend.rule=Host:www.test.com"
      - "traefik.port=80"
networks:
  test-traefik:
    external: true

6.然後部署compose-file

docker stack deploy --compose-file nginx.yaml web

7.在本地hosts文件添加一行

192.168.2.63 www.test.com

8.訪問192.168.2.63:8080與www.test.com。 截圖如下

1.png


2.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章