docker之旅 10.容器实战-部署tars微服务框架

参考地址:

https://doc.tarsyun.com/#/installation/docker.md

https://github.com/TarsCloud/Tars

https://hub.docker.com/r/tarscloud/base-deploy

 https://tarscloud.gitbook.io/tarsdocs/kuang-jia-bu-shu/docker

 

前提:

假设你已经安装好了 docker , docker-compose。

如果还没有安装,可以看我之前的文章:

docker之旅 1.开篇--安装和设置docker

docker之旅 2.在docker里面安装第一个镜像,docker里面卸载镜像

docker之旅 3.安装docker-compose以及让nginx跟随docker启动

docker之旅 4.docker的镜像源地址(Docker Hub 镜像源),以及如何验证地址是否可以使用

docker之旅 6.docker下面安装mysql, 访问mysql

认真看完这几篇文章,按照里面的步骤实践,应该就可以成功安装 docker了。也学会了如何使用docker 安装 nginx,mysql 。


 

 

开始我们的正文:实战部署 tars 微服务框架

1.拉取镜像文件到本地

docker pull nginx 
docker pull mysql:5.6
docker pull tarscloud/framework:v3.0.20
docker pull tarscloud/tars-node:latest

2.配置 docker-compose.yml 文件

比如,在  /home/henry/docker2024 目录下面,创建一个  docker-compose.yml 的文件。

你最好也要进入到    /home/henry/docker2024  目录下面,因为 执行 docker-compose 的时候,需要当前目录有 docker-compose.yml文件(否则执行失败,会报错)

内容如下:

version: "3"
services:
  nginx:
    image: nginx
    restart: always # 总是重启容器
  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
      - /etc/localtime:/etc/localtime
    networks:
      internal:
        ipv4_address: 172.25.1.2
  framework:
    image: tarscloud/framework:v3.0.20
    container_name: tars-framework
    ports:
      - "3000:3000"
    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
      - /etc/localtime:/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/tars:rw
      - /etc/localtime:/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.0.0/16

3.开放本机的若干端口号

开放 3000, 3001, 9000到90010, 3307,3306 这些端口号。

开放端口号脚本,命名为  openPort.sh,给与  755权限( chmod  755 openPort.sh)

脚本内容如下:

#!/bin/bash  

# 检查参数数量  
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <port_number>"  
    exit 1
fi

# 获取端口号  
PORT=$1

# 检查端口号是否为数字  
if ! [[ "$PORT" =~ ^[0-9]+$ ]]; then
    echo "Error: Port number must be a positive integer."  
    exit 1
fi

# 开放端口  
sudo firewall-cmd --zone=public --add-port=$PORT/tcp --permanent

# 重新加载防火墙配置  
sudo firewall-cmd --reload

# 检查端口是否已开放  
if sudo firewall-cmd --zone=public --query-port=$PORT/tcp; then
    echo "Port $PORT has been opened successfully."  
else
    echo "Failed to open port $PORT."  
    exit 1
fi

4.使用docker-compose 启动我们的容器

进入   /home/henry/docker2024  目录,

执行

docker-compose up -d  --remove-orphans

如果一切顺利,到这里你的tars 微服务框架就部署好了。

5.登录 web页面

5.1 在宿主机里面 使用 chrome 浏览器,访问 

http://172.25.1.3:3000

如果宿主机里面访问的时候页面有问题

其实也可以 在本地(windows环境) 使用chrome 浏览器 访问  宿主机(虚拟机)的地址+3000 端口

例如我的(http://192.168.10.102:3000/), 192.168.10.102 是我的宿主机(虚拟机)的地址

(因为容器做了端口映射,所以可以在windows下面去访问宿主机(虚拟机),然后进一步访问到容器的web页面)

 

第一次访问的时候,要求输入密码。

用户名默认是 admin

在web管理页面,找到 右上角 的 用户中心,再点击【设置】,在配置列表里面开启  ADMIN 功能。

启用后所有用户均为admin级别用户, 一般用于测试环境

 

到这里,如何在 centos7 下面通过 docker 部署 tars微服务就介绍完了。

如果有问题,可以重新再把这里介绍的过一遍。

 


 

1.如果你的mysql 不是 5.6,而且 8.0 ,那么请注意, mysql8 默认开启了 ssl, 以及密码验证使用了 caching_sha2_password, 因此启动 mysql8 时, 需要关闭 ssl 以及默认使用 mysql_native_password 方式。

2.如果你设置 虚拟网络的时候有问题,要检查之前是不是设置过 这个网段的虚拟网络,或者 这个名字的虚拟网络。

通过  

## 删除一个 叫 tars 的虚拟网络(我们的yml里自带了虚拟网络,不需要手动再去创建)
docker network rm tars

3.web页面打不开的问题。

先在宿主机验证能不能访问   http://172.25.1.3:3000 

然后检查 自己端口映射是不是有问题, 是否开启了宿主机的 3000 端口号,各个容器是否正常启动了。

 

最后,祝愿大家都能顺利安装,学习进步。

 

posted @ 2024-05-01 22:35  He_LiangLiang  阅读(50)  评论(0编辑  收藏  举报