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 端口号,各个容器是否正常启动了。
最后,祝愿大家都能顺利安装,学习进步。