CentOS下利用Docker部署Surging

时间:2021-03-28 21:30:14

原文: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 start docker
$ 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