Tars快速入门 | TarsDocs

一、创建需求网路

方便虚拟机、Mac、Linux 主机等各种环境下的 docker 部署,先创建虚拟网络,模拟现实中的局域网内网环境(注意 docker 都还是在同一台机器, 只是 docker 的虚拟 ip 不同, 模拟多机)

# 创建一个名为tars的桥接(bridge)虚拟网络,网关172.199.116.0/24,网段为172.199.116.1
  sudo docker network create \
   --driver=bridge \
   --subnet=172.199.116.0/16 \
   --ip-range=172.199.116.0/16 \
   --gateway=172.199.116.1 \
   tars

通过桥连创建虚拟网络,生产建议使用--net host ,宿主机IP和容器IP一致

二、docker安装mysql

#拉取mysql镜像,tag不写默认是最新
 sudo docker pull mysql:5.7  
 sudo docker pull mysql:latest
#在本地宿主机创建数据库目录用于存储docker映射的数据库文件
 mkdir -p /opt/software/dmysql/data    /opt/software/dmysql/logs   /opt/software/dmysql/conf
#docker启动mysql
 sudo docker run -p 3307:3306 \
     --net=tars \    --privileged=true \
     --ip="172.199.116.2" \
     --name tars-mysql \
     -v /opt/software/dmysql/conf:/etc/mysql/conf \
     -v /opt/software/dmysql/logs:/logs \
     -v /opt/software/dmysql/data:/var/lib/mysql \
     -e MYSQL_ROOT_PASSWORD=123456 \
     -d mysql:5.7
#配置mysql配置文件
切换到上述命令配置的主机/opt/software/dmysql/conf目录下,创建 my.cnf文件,使用vim命令对 my.cnf文件添加如下内容,在docker中安装的mysql默认字符集是latin1,需要改成utf8(不配置无法插入中文)
[client]
 default-character-set=utf8
 [mysql]
 default-character-set=utf8
 [mysqld]
 init_connect='SET collation_connection = utf8_unicode_ci'
 init_connect='SET NAMES utf8'
 character-set-server=utf8
 collation-server=utf8_unicode_ci
 skip-character-set-client-handshake
 skip-name-resolve

-p:将docker的mysql3306端口转发到宿主机3307端口,便于通过localhost:3307进行访问
-v:将docker容器中的数据库文件映射到对应的额宿主机文件地址
--name:容器名称
-e MYSQL_ROOT_PASSWORD=123456:设置初始密码为123456
--privileged=true  用到文件映射的建议都加上
使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。

3、docker安装framework

  • framework: Tars框架Docker制作脚本, 制作的docker包含了框架核心服务和web管理平台
  • tars: Tars框架Docker制作脚本, 和framework比, 增加了java, nodejs等运行时支持, 即可以把java, nodejs服务发布到docker里面(docker里面安装了jdk, node, php环境)
  • 启动framework会自动链接初始化数据库,初始化完才都能登录,首次需要等待一会。
#拉取framework镜像
  sudo docker pull tarscloud/framework  #运行framework
 sudo docker run -d \
     --name=tars-framework \
     --net=tars \
     -e MYSQL_HOST="1172.199.116.2" \
     -e MYSQL_ROOT_PASSWORD="123456" \
     -e MYSQL_USER=root \
     -e MYSQL_PORT=3306 \
     -e REBUILD=false \
     -e INET=eth0 \
     -e SLAVE=false \
     --ip="172.199.116.3" \    --privileged=true \
     -v /opt/software/framework:/data/tars \
     -v /etc/localtime:/etc/localtime \
     -p 3000:3000 \
     -p 3001:3001 \
     tarscloud/framework:latest

挂载的/etc/localtime是用来设置容器时区的,若没有可以去掉
3000端口为web程序端口,3001端口为web授权相关服务端口(docker>=v2.4.7可以不暴露该端口)

  1. 目录说明

创建时, 会将 docker 的目录/data/tars 映射到宿主机目录//opt/software/data//framework, 启动 docker 后, 请检查宿主机目录: /data/tars, 正常情况下会有创建以下几个目录:

  • app_log: tars 服务的日志目录
  • tarsnode-data: tarsnode/data 目录(存放发布到 docker 的业务服务), 保证 docker 重启, 数据不丢失
  • web_log: web 中 tars-node-web 模块的日志(主机才有)
  • demo_log: web 中 tars-user-system 模块的日志(主机才有), (docker>=v2.4.7 这个目录下无内容了)
  • patchs: 上传的发布包(主机才有)

浏览器访问http://{IP:3000},访问tars主控

4、docker装tars-node

  • tars-node: tarsnode 节点的镜像,包含各语言的运行时环境,可以将服务发布到 tars-node 容器中, tarsnode 每台机器都存在, 它连接到 framework
  • 部署完成后, 打开 framework 主节点上 web 管理平台, 你可以通过 web 管理平台部署和发布服务, 将这些服务发布到 tarsnode 所在的机器上
#拉取framework镜像
 sudo docker pull tarscloud/tars-node
#运行tarsnode
 sudo docker run -d --net=tars -eINET=eth0 -eWEB_HOST=http://172.199.116.3:3000 \
 --name=tarsnode01 \--privileged=true \
 -v /opt/software/tarsnode01:/data/tars \
 -v/etc/localtime:/etc/localtime \
 --ip="172.199.116.4" \
 -p 9000-9010:9000-9010 \
 tarscloud/tars-node

其中地址为:172.199.116.3:3000 是TarsWeb的访问地址,重新登录就可以看到tarsnode01节点

若依 Docker 安装_运维