tarsweb平台搭建

环境推荐使用:Centos7

docker 环境搭建可以自己在网上找教程,文章中就不再说明了。

docker-compose 安装

sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

DaoCloud 镜像配置

curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

tars 环境搭建 docker-compose 文件

version: "3"

services:
  tars:
    image: tarscloud/tars:php
    # 自定义容器名称
    container_name: tars
    # 自定义宿主机与容器之间的端口映射
    ports:
      - "3000:3000"
      - "80:80"
      - "20000-20005:20000-20005"
    # 挂载宿主机与容器之间的文件路径
    volumes:
      - /c/Users/tars_data:/data
      - /c/Users:/root/TarsShare
    # 自定义所需环境变量
    environment:
      # 此选项用于将Tars的系统进程的数据目录挂载到 /data 目录之下
      - MOUNT_DATA=true
      # 数据库ip 可以使用容器名来获取动态分配的ip地址
      - DBIP=mysql
      # 数据库端口
      - DBPort=3306
      # 数据库使用者
      - DBUser=root
      # 数据库密码
      - DBPassword=tars2015
    # 依赖服务
    depends_on:
      - mysql
    # 所属网络
    networks:
      - kong-net
    # 设置容器访问宿主机权限
    privileged: true
    restart: always

  mysql:
    image: mysql:5.7.28
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      # 挂载数据库目录
      - "/c/Users/mysql_data:/var/lib/mysql"
    environment:
      # 设置数据库密码
      - "MYSQL_ROOT_PASSWORD=tars2015"
    networks:
      - "kong-net"
    privileged: true
    restart: "always"
    command:
      # 设置支持全零的date字段值
      - --sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
      # window下mysql不能使用aio
      - --innodb_use_native_aio=0

  nginx:
    image: "nginx:latest"
    container_name: "nginx"
    privileged: true
    ports:
      - "12226:12226"
      - "1234:1234"
      - "12345:80"
    volumes:
      - "/c/Users/nginx/web:/usr/share/nginx/html"
      - "/c/Users/nginx/vhost:/etc/nginx/conf.d"
      - "/c/Users/nginx/nginx.conf:/etc/nginx/nginx.conf"
    depends_on:
      - tars
    networks:
      - "kong-net"

  redis:
    image: "redis:latest"
    container_name: "redis"
    restart: "always"
    volumes:
      - "/c/Users/redis:/etc/redis"
    ports:
      - "6379:6379"
    command:
      # 数据本地写入应用
      - --appendonly yes
    networks:
      - "kong-net"

  kong:
    image: "kong:latest"
    container_name: "kong"
    ports:
      - "8000:8000"
      - "8001:8001"
      - "8443:8443"
      - "8444:8444"
    environment:
      # kong 信息输出设置
      - "KONG_ADMIN_ACCESS_LOG=/dev/stdout"
      - "KONG_ADMIN_ERROR_LOG=/dev/stderr"
      # 监听ip + port
      - "KONG_ADMIN_LISTEN=0.0.0.0:8001"
      - "KONG_CASSANDRA_CONTACT_POINTS=kong-postgres"
      # pg数据库名
      - "KONG_PG_DATABASE=kong"
      # pg 主机名
      - "KONG_PG_HOST=kong-postgres"
      # pg数据库
      - "KONG_DATABASE=postgres"
      # pg数据库密码
      - "KONG_PG_PASSWORD=tars2015"
      # 用户限定
      - "KONG_PG_USER=kong"
      - "KONG_PROXY_ACCESS_LOG=/dev/stdout"
      - "KONG_PROXY_ERROR_LOG=/dev/stderr"
    networks:
      - "kong-net"
    # 依赖服务
    depends_on:
      - "kong-postgres"
      - "kong-migrations"
    restart: "always"

  kong-postgres:
    image: "postgres:latest"
    container_name: "kong-postgres"
    ports:
      - "5432:5432"
    environment:
      - "POSTGRES_USER=kong"
      - "POSTGRES_DB=kong"
      - "POSTGRES_PASSWORD=tars2015"
      # 绑定pg数据目录
      - "PGDATA=/tmp/postgres_data"
    restart: "always"
    networks:
      - "kong-net"
    volumes:
      - "/c/Users/postgres_data:/tmp/postgres_data"

  kong-migrations:
    image: "kong:latest"
    container_name: "kong-migrations"
    # 这个服务就是用来执行这个命令的
    command: "kong migrations bootstrap"
    environment:
      - "KONG_CASSANDRA_CONTACT_POINTS=kong-postgres"
      - "KONG_PG_DATABASE=kong"
      - "KONG_PG_HOST=kong-postgres"
      - "KONG_DATABASE=postgres"
      - "KONG_PG_PASSWORD=tars2015"
      - "KONG_PG_USER=kong"
    depends_on:
      - "kong-postgres"
    links:
      - "kong-postgres:kong-postgres"
    networks:
      - "kong-net"
    restart: "on-failure"

  kong-dashboard:
    image: "hansonyao/kong-dashboard:latest"
    container_name: "kong-dashboard"
    restart: "always"
    ports:
      - "8084:8080"
    depends_on:
      - "kong-postgres"
      - "kong-migrations"
      - "kong"
    # 服务部署完成执行的命令,bboysoul用户名tars2015密码
    command: "start --kong-url http://kong:8001 --basic-auth bboysoul=tars2015"
    networks:
      - "kong-net"

networks:
  kong-net:
    driver: "bridge"

启动,配置更新重启

docker-compose up -d

关闭

docker-compose down

看见服务状态全部为 UP 就说明启动正常了,如果是有启动不正常的情况出现,我们可以尝试

docker logs tars

来查看具体是报什么错误了,然后再具体情况具体解决

查看具体 docker 容器的 ip 可以使用如下命令

docker inspect tars | grep IPAddress

要看具体的挂载,端口,网络的话也是使用上面的命令,不过要将 grep 去掉。

相关文章

Kubernetes网络

Kubernetes网络Service 存在的意义Service引入主要是解决Pod的动态变化,提供统一访问入口: 防止Pod失联,找到提供同一个服务的Pod(服务发现) 定义一组Pod的访问策略(负...

10个运维拿来就用的 Shell 脚本,用了才知道有多爽

1、监控 MySQL 主从同步状态是否异常脚本#!/bin/bash HOST=localhost USER=root PASSWD=123.com IO_SQL_STATUS=$(mysql -h$...

通过 lua 进行 nginx redis 访问控制

Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等。1. 需求分析1. Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限...

NGINX常规CORS错误解决方案

CORS错误CORS(Cross-Origin Resource Sharing,跨源资源共享)是一种机制,它使用额外的HTTP头部来告诉浏览器允许一个网页运行的脚本从不同于它自身来源的服务器上请求资...

每日漏洞 | Host头攻击

0x00 概述漏洞名称:Host头攻击风险等级:低问题类型:管理员设置问题0x01 漏洞描述很多场景下,开发者都相信HTTP Host header传递的参数值用来更新链接导出脚本或者一些敏感操作。但...

【Docker 新手入门指南】第八章:网络配置

一、端口映射进阶:-p与-P的核心差异随机映射(-P)场景:快速启动服务,自动分配宿主机端口(适用于开发测试)。docker run -d -P nginx # 容器 80 端口随机映射到宿主机高端口...