之前部署tars是自己编译安装的,最近想把原来的tars集群迁移到新的版本,打算用docker部署的方式,所以搞了台服务器试了下,发现docker的方式安装还是很方便的,所以把过程记录下来
1. 安装docker
这个去网上找相关文档吧,这里就不细说了
2. 创建虚拟子网
# 创建一个名为tars的桥接(bridge)虚拟网络,网关172.25.0.1,网段为172.25.0.0
docker network create -d bridge --subnet=172.25.0.0/16 --gateway=172.25.0.1 tars
3. 运行mysql
sudo docker run -d -p 3306:3306 \
--net=tars \
-e MYSQL_ROOT_PASSWORD="tars123" \
--ip="172.25.0.2" \
-v /data/framework-mysql:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
--name=tars-mysql \
mysql:5.6
4. 运行tars框架
sudo docker pull tarscloud/framework:v2.4.10
sudo docker run -d \
--name=tars-framework \
--net=tars \
-e MYSQL_HOST="172.25.0.2" \
-e MYSQL_ROOT_PASSWORD="tars123" \
-e MYSQL_USER=root \
-e MYSQL_PORT=3306 \
-e REBUILD=false \
-e INET=eth0 \
-e SLAVE=false \
--ip="172.25.0.3" \
-v /data/framework:/data/tars \
-v /etc/localtime:/etc/localtime \
-p 3000:3000 \
-p 3001:3001 \
tarscloud/framework:v2.4.10
4. 安装nginx
sudo docker run -d \
--name=nginx \
-v /data/etc/nginx:/etc/nginx \
-v /data/log:/data/log \
-p 80:80 \
nginx:latest
nginx配置
# nginx也是通过docker运行的,把配置文件映射到宿主机器,不然重启后配置会丢失
vi /data/etc/nginx/conf.d/tars.conf
upstream bakend{
server 172.17.0.1:3000 weight=1; # docker里面访问宿主机的话ip是172.17.0.1, 其实就是容器里面的网关地址
ip_hash;
}
server {
listen 80;
server_name tars.com; #改成你自己的域名
client_max_body_size 100m;
location / {
access_log /data/log/nginx/tars/access.log main;
proxy_pass http://bakend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
5. 安装框架从节点
sudo docker run -d \
--name=tars-framework-slave \
--net=tars \
-e MYSQL_HOST="172.25.0.2" \
-e MYSQL_ROOT_PASSWORD="tars123" \
-e MYSQL_USER=root \
-e MYSQL_PORT=3306 \
-e REBUILD=false \
-e INET=eth0 \
-e SLAVE=true \ #记得这里要改成true
--ip="172.25.0.4" \
-v /data/framework-slave:/data/tars \
-v /etc/localtime:/etc/localtime \
tarscloud/framework:v2.4.10
6. 安装tars-node节点
sudo docker pull tarscloud/tars-node:java
6.1 节点-1
sudo docker run -d \
--name=tars-node-1 \
--net=tars \
-e INET=eth0 \
-e WEB_HOST="http://172.25.0.3:3000" \
--ip="172.25.0.5" \
-v /data/node-1:/data/tars \
-v /etc/localtime:/etc/localtime \
-p 9000-9010:9000-9010 \
tarscloud/tars-node:java
6.2 节点-2
sudo docker run -d \
--name=tars-node-2 \
--net=tars \
-e INET=eth0 \
-e WEB_HOST="http://172.25.0.3:3000" \
--ip="172.25.0.6" \
-v /data/node-2:/data/tars \
-v /etc/localtime:/etc/localtime \
-p 9101-9109:9101-9109 \
tarscloud/tars-node:java
7. 注意问题
1. 因为我只有一台机器,所以所有docker都是在同一个虚拟子网里,相互之间访问没问题,如果你是多台的话,网络最好使用宿主机的网络,不然就需要自己增加路由规则
--net=host 代表docker使用宿主机网络
8. 服务器
刚好碰到ucloud做活动,撸了一台2核16G的香港服务器,三年才3100块,有兴趣可以去撸一台,记得领卷后再买
来源:oschina
链接:https://my.oschina.net/sxwailyc/blog/4774879