其他分享
首页 > 其他分享> > Tars docker简单部署

Tars docker简单部署

作者:互联网

Docker 部署服务开发环境

2.1 创建 docker 虚拟网络

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

# 创建一个名为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

2.2 启动 MySQL

docker run -d -p 3306:3306 \
    --net=tars \
    -e MYSQL_ROOT_PASSWORD="123456" \
    --ip="172.25.0.2" \
    -v /data/framework-mysql:/var/lib/mysql \
    -v /etc/localtime:/etc/localtime \
    --name=tars-mysql \
    mysql:5.6

2.3 使用 tarscloud/framework 部署框架

  1. 拉取镜像

最新版本

docker pull tarscloud/framework:latest

指定版本:

docker pull tarscloud/framework:v{x.y.z}

使用指定版本,如:v2.4.0,便于开发和生产环境的部署,后期需要升级时可选择更新的版本tag,升级之前请先查看GitHub的changelog,避免升级到不兼容的版本造成损失。

  1. 启动镜像(目前只考虑了 linux 上, 时间和本机同步)
# 挂载的/etc/localtime是用来设置容器时区的,若没有可以去掉
# 3000端口为web程序端口
# 3001端口为web授权相关服务端口(docker>=v2.4.7可以不暴露该端口)
docker run -d \
    --name=tars-framework \
    --net=tars \
    -e MYSQL_HOST="172.25.0.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.25.0.3" \
    -v /data/framework:/data/tars \
    -v /etc/localtime:/etc/localtime \
    -p 3000:3000 \
    -p 3001:3001 \
    tarscloud/framework:v2.4.0

安装完毕后, 访问 http://${your_machine_ip}:3000 打开 web 管理平台

  1. 目录说明

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

如果这几个目录没有创建, 你可以手工创建, 再重启 docker.

  1. 参数解释

MYSQL_IP: mysql 数据库的 ip 地址

MYSQL_ROOT_PASSWORD: mysql 数据库的 root 密码

INET: 网卡的名称(ifconfig 可以看到, 比如 eth0), 表示框架绑定本机 IP, 注意不能是 127.0.0.1

REBUILD: 是否重建数据库,通常为 false, 如果中间装出错, 希望重置数据库, 可以设置为 true

SLAVE: 是否是从节点, 可以部署多台机器, 通常一主多从即可.

MYSQL_USER: mysql 用户, 默认是 root

MYSQL_PORT: mysql 端口

  1. 启动框架从节点

如果希望多节点部署, 则在不同机器上执行 docker run …即可, 注意参数设置!

docker run -d \
    --name=tars-framework-slave \
    --net=tars \
    -e MYSQL_HOST="172.25.0.2" \
    -e MYSQL_ROOT_PASSWORD="123456" \
    -e MYSQL_USER=root \
    -e MYSQL_PORT=3306 \
    -e REBUILD=false \
    -e INET=eth0 \
    -e SLAVE=true \
    --ip="172.25.0.4" \
    -v /data/framework-slave:/data/tars \
    -v /etc/localtime:/etc/localtime \
    docker.tarsyun.com/tarscloud/framework:v2.4.0

注意:SLAVE 参数不同

2.4 Docker 部署 Tars 应用节点

Tars 应用节点镜像默认为集合环境(Java+GoLang+NodeJs+PHP)的镜像,如果需要可登陆 Docker Hub 查看各语言相关 tag

  1. 拉取镜像

最新版本:

docker pull tarscloud/tars-node:latest
  1. 启动 Node(目前只考虑了 linux 上, 时间和本机同步)

最新版本:

docker run -d \
    --name=tars-node \
    --net=tars \
    -e INET=eth0 \
    -e WEB_HOST="http://172.25.0.3:3000" \
    --ip="172.25.0.5" \
    -v /data/node:/data/app \
    -v /etc/localtime:/etc/localtime \
    -p 9000-9010:9000-9010 \
    tarscloud/tars-node:latest

注意, 如果在同一台机器上采用–net=host, 同时启动framework和tars-node镜像, 是不行的, 因为framework中也包含了一个tars-node, 会导致端口冲突, 启动不了

Docker 部署服务生产环境

概要说明:

如果想自己构建镜像, 请参考: https://github.com/TarsCloud/TarsDocker

3.1 Docker 部署 Tars 框架服务

# 挂载的/etc/localtime是用来设置容器时区的,若没有可以去掉
# --net=host 代表docker使用宿主机网络
# INET=eth0 eth0为网卡名称,tars脚本会根据网卡名称获取IP并将服务绑定到获取到的IP上
docker run -d \
    --name=tars-framework \
    --net=host \
    -e MYSQL_HOST="Host IP For MySQL Service" \
    -e MYSQL_ROOT_PASSWORD="Your Root Password" \
    -e MYSQL_USER=root \
    -e MYSQL_PORT=3306 \
    -e REBUILD=false \
    -e SLAVE=false \
    -e INET=eth0 \
    -v /etc/localtime:/etc/localtime \
    -v /tmp/test/data:/data/tars \
    tarscloud/framework:v2.4.0

3.2 Docker 部署 Tars 应用节点

# 挂载的/etc/localtime是用来设置容器时区的,若没有可以去掉
# --net=host 代表docker使用宿主机网络
# INET=eth0 eth0为网卡名称,tars脚本会根据网卡名称获取IP并将服务绑定到获取到的IP上
docker run -d \
    --name=tars-node \
    --net=host \
    -e INET=eth0 \
    -e WEB_HOST="The Accessible Http Address and Port Of Your Tars Framework" \
    -v /data/tars:/data/app \
    -v /etc/localtime:/etc/localtime \
    tarscloud/tars-node:latest

问题检查

如果 docker 运行后, 仍然无法打开管理平台, 可以如下检查:

docker --name=tars-framework \
    --net=tars \
    -e MYSQL_HOST="172.25.0.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.25.0.3" \
    -v /data/framework:/data/tars \
    -v /etc/localtime:/etc/localtime \
    -p 3000:3000 \
    -p 3001:3001 \
    tarscloud/framework:v2.4.0

如果 web 平台打开, 但是显示错误, 就需要检查 web 的问题, 可以进入 docker, 请参考检查 web 的问题中的检查 web 问题

镜像加速

此方法仅适用于 linux 环境

curl -sSL https://doc.tarsdoc.com/docker_set_mirror.sh | sh -s https://w1mnep2c.mirror.aliyuncs.com
systemctl restart docker

开发环境 docker-compose

version: "3"

services:
  mysql:
    image: mysql:5.6
    container_name: tars-mysql
    ports:
      - "3307:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    volumes:
      - ./mysql/data:/var/lib/mysql:rw
      - ./source/Shanghai:/etc/localtime
    networks:
      internal:
        ipv4_address: 172.25.1.2
  framework:
    image: tarscloud/framework:v2.4.0
    container_name: tars-framework
    ports:
      - "3000:3000"
      - "3001:3001"
    restart: always
    networks:
      internal:
        ipv4_address: 172.25.1.3
    environment:
      MYSQL_HOST: "172.25.1.2"
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_USER: "root"
      MYSQL_PORT: 3306
      REBUILD: "false"
      INET: eth0
      SLAVE: "false"
    volumes:
      - ./framework/data:/data/tars:rw
      - ./source/Shanghai:/etc/localtime
    depends_on:
      - mysql
  node:
    image: tarscloud/tars-node:latest
    container_name: tars-node
    restart: always
    networks:
      internal:
        ipv4_address: 172.25.1.5
    volumes:
      - ./node/data:/data/app:rw
      - ./source/Shanghai:/etc/localtime
    environment:
      INET: eth0
      WEB_HOST: http://172.25.1.3:3000
    ports:
      - "9000-9010:9000-9010"
    depends_on:
      - framework
networks:
  internal:
    driver: bridge
    ipam:
      config:
        - subnet: 172.25.1.0/16

docker版本说明

说明:

以上执行方式, 从tarscloud/framework:v2.4.0以后才执行

 

转载-----------------------------------------------------------------------------------------------------------------------------------------------------

标签:node,framework,部署,tars,tarscloud,MYSQL,Tars,docker
来源: https://www.cnblogs.com/kinwing/p/13605655.html