CentOS下利用Docker部署Surging
1. 安装Centos, 配置固定ip
配置文件地址vi /etc/sysconfig/network-scripts/ifcfg-ens33
```
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.0.101
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=d197ec13-2ec7-42a6-8899-2bd0bacfc2ca
DEVICE=ens33
ONBOOT=yes
ZONE=public
```
备注:配置防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2. 安装Docker(自己网上找)
```
# 定义安装版本
export docker_version=17.03.2
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common bash-completion
# Step 2: 更新并安装 Docker-CE
sudo apt-get -y update
version=$(apt-cache madison docker-ce|grep ${docker_version}|awk '{print $3}')
# --allow-downgrades 允许降级安装
sudo apt-get -y install docker-ce=${version} --allow-downgrades
# 设置开机启动
sudo systemctl enable docker
```
3.安装Rancher
```
# 下载镜像
docker pull rancher/server
#运行实例
docker run -d --restart=always -p 8080:8080 rancher/server
```
备注:
1. 添加主机时直接拷贝生成的命令运行即可
2. UI地址http://192.168.0.101:8080
4. 安装Rabbitmq
```
#下载镜像
docker pull rabbitmq:management
#运行实例
docker run -d --name rabbitmq --publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \rabbitmq:management
```
备注:UI地址http://192.168.0.101:15672
5. 安装Consul
```
#获取镜像
docker pull consul
#运行实例node1的server
docker run -d --name node1 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -node=node1 -bootstrap-expect=1
#获取node1的ip
JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
#运行实例node2的server
docker run -d --name node2 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -node=node2 -join $JOIN_IP
#运行带ui的client
docker run -d --name node11 -p 8400:8400 -p 8500:8500 -p 8600:53/udp -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -ui -node=node11 -client=0.0.0.0 -join $JOIN_IP
#查看节点
docker exec node1 consul members
```
备注:
1.运行带UI命令时如果报错就先删除运行的容器node11,然后重新启动系统后再运行命令
2.UI地址http://192.168.0.101:8500
6.安装dotnetcore 2.1 runtime
```
docker pull microsoft/dotnet:2.1-runtime
#此命令会进入容器内,Ctrl+P+Q 退出
docker run -it microsoft/dotnet:2.1-runtime
#
```
7.获取Surging源码,发布服务代码并上传
```
#发布代码
dotnet publish -r centos.7-x64 -c release
#创建镜像
docker build -t surgingserver .
#运行服务
docker run --name surgingserver --env Mapping_ip=192.168.0.101 --env Mapping_Port=98 --env RootPath=/webapps/surgingserver/publish --env Register_Conn=192.168.0.101:8500 --env EventBusConnection=172.17.0.4 --env Surging_Server_IP=0.0.0.0 -v /webapps/surgingserver/publish:/webapps/surgingserver/publish -it -p 98:98 surgingserver
```
备注:
ip换成自己系统对应的ip
RootPath为上传的代码路径
EventBusConnection为MQ的docker分配的ip,可以再Rancher看到
8.发布网关代码
```
#发布代码
dotnet publish -r centos.7-x64 -c release
#创建实例
docker build -t surgingapi .
#运行网关容器
docker run --name surgingapi -it -p 729:729 --env Register_Conn=192.168.0.101:8500 surgingapi
```
备注:
1. 网关地址http://192.168.0.101:729