fastbee项目部署

  1. 项目部署-docker
    1. 整体部署
    2. 拆分部署
      1. nginx
      2. redis
      3. mysql
      4. java
      5. emqx

项目部署-docker

整体部署

version: '2'

networks:
  network:
    ipam:
      driver: default
      config:
        - subnet: '177.7.0.0/16'

services:
  redis:
    image: redis:7.0.0
    container_name: redis
    ports:
      - 6379:6379
    privileged: true
    networks:
      network:
        ipv4_address: 177.7.0.10
    volumes:
      - /var/data/redis:/usr/local/etc/redis
      - /var/data/redis/data:/data
    command: [ '-- requirepass 密码', '-- appendonly yes' ]

  mysql:
    image: mysql:5.7
    container_name: mysql
    ports:
      - 3306:3306
    privileged: true
    networks:
      network:
        ipv4_address: 177.7.0.11
    volumes:
      - /var/data/mysql/mysql:/var/lib/mysql
      - /var/data/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
      - /var/data/mysql/initdb:/docker-entrypoint-initdb.d
    environment:
      MYSQL_DATABA: 数据库名字
      MYSQL_ROOT_PASSWORD: 密码
    command:
      [
        'mysqld',
        '--character-set-server=utf8',
        '--collation-server=utf8_unicode_ci',
        '--default-time-zone=+8:00',
        '--lower-case-table-names=1'
      ]

  emqx:
    image: emqx:5.1
    container_name: emqx
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 18083:18083
    privileged: true
    networks:
      network:
        ipv4_address: 177.7.0.12
    volumes:
      - /etc/localtime:/etc/localtime
      - /var/data/emqx/etc/emqx.conf:/opt/emqx/etc/emqx.conf
      - /var/data/emqx/etc/acl.conf:/opt/emqx/etc/acl.conf
      - /var/data/emqx/etc/log:/opt/emqx/log
    environment:
      SET_CONTAINER_TIMEZONE: "true"
      CONTAINER_TIMEZONE: Asia/Shanghai

  java:
    image: openjdk:8-jre
    container_name: java
    ports:
      - 8080:8080
      - 8888:8888
      - 8889:8889/udp
      - 5061:5061/udp
    privileged: true
    networks:
      network:
        ipv4_address: 177.7.0.13
    depends_on:
      - emqx
      - redis
      - mysql
      - tdengine
      - zlmedia-record
    volumes:
      - /var/data/java/fastbee-admin.jar:/server.jar
      - /var/data/java/libtaos.so:/usr/lib/libtaos.so
      - /var/data/java/uploadPath:/uploadPath
      - /var/data/java/logs:/logs
      - /etc/localtime:/etc/localtime
    environment:
      TZ: Asia/Shanghai
    entrypoint: java -jar /server.jar

  nginx:
    image: nginx:stable
    container_name: nginx
    ports:
      - 80:80
      - 443:443
      - 15060:15060/udp
    privileged: true
    networks:
      network:
        ipv4_address: 177.7.0.14
    depends_on:
      - java
    volumes:
      - /var/data/nginx/vue:/usr/share/nginx/html
      - /var/data/nginx/view:/usr/share/nginx/view
      - /var/data/nginx/h5:/usr/share/nginx/h5
      - /var/data/nginx/www:/usr/share/nginx/www
      - /var/data/nginx/doc:/usr/share/nginx/doc
      - /var/data/nginx/ssl:/usr/share/nginx/ssl
      - /var/data/nginx/nginx.conf:/etc/nginx/nginx.conf
      - /var/data/nginx:/var/log/nginx

  zlmedia-record:
    build:
      context: /var/data/zlmedia/record
    container_name: zlmedia-record
    privileged: true
    restart: always
    ports:
     - 18081:18081
     - 8082:80
     - 8443:443
     - 554:554
     - 1935:1935
     - 8000:8000
     - 30000-30100:30000-30100/udp
    expose:
     - "80"
     - "443"
     - "554"
     - "1935"
    volumes:
     - /var/data/zlmedia/record/fastbee-record.jar:/fastbee-record.jar
     - /var/data/zlmedia/record/logs:/opt/assist/logs
     - /var/data/zlmedia/logs:/opt/media/bin/log
     - /var/data/zlmedia/data/www:/opt/media/bin/www
     - /var/data/zlmedia/conf/config.ini:/opt/media/conf/config.ini
     - /var/data/zlmedia/conf/default.pem:/opt/media/bin/default.pem
    networks:
      network:
        ipv4_address: 177.7.0.15

拆分部署

运行容器前,没有网桥,请先创建网桥,用于容器间通讯: docker network create -d bridge fastbee-bridge

nginx

执行一下命令安装nginx,安装完成后,前端运行打包,把dist文件夹中内容上传到 /var/data/nginx/vue 目录下

docker run \
--name nginx \
--volume /var/data/nginx/vue:/usr/share/nginx/html \
--volume /var/data/nginx:/usr/share/nginx \
--volume /var/data/nginx/nginx.conf:/etc/nginx/nginx.conf \
--volume /var/data/nginx/log:/var/log/nginx \
--publish 80:80 \
--publish 443:443 \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
nginx:stable

tip: 遇到一些插曲,解决办法如下:

sudo vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io/",
    "https://huecker.io/",
    "https://dockerhub.timeweb.cloud",
    "https://noohub.ru/",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://xx4bwyg2.mirror.aliyuncs.com",
    "http://f1361db2.m.daocloud.io",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
systemctl restart docker

redis

运行容器前,没有网桥,请先创建网桥,用于容器间通讯: docker network create -d bridge fastbee-bridge

执行下面命令安装,其中 requirepass 是访问密码

docker run \
--name redis \
--publish 6379:6379 \
--volume /var/data/redis:/usr/local/etc/redis  \
--volume /var/data/redis/data:/data  \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
redis:7.0.0 \
--requirepass "密码" \
--appendonly yes

mysql

官方的Mysql镜像默认采用latin编码,不支持中文,改为utf8编码,同时设置了时区和大小写敏感

MYSQL_ROOT_PASSWORD 是root账户密码

  1. 执行命令安装Mysql
docker run \
--name mysql \
--publish 3306:3306 \
--env TZ=Asia/Shanghai \
--env MYSQL_DATABASE="数据库名" \
--env MYSQL_ROOT_PASSWORD=密码\
--volume /var/data/mysql/mysql:/var/lib/mysql \
--volume /var/data/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf \
--volume /var/data/mysql/initdb:/docker-entrypoint-initdb.d \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_unicode_ci \
--lower-case-table-names=1
  1. 进入容器内部,执行命令: docker exec -it mysql /bin/bash

  2. 修改编码,直接复制进去执行,exit用于退出容器

    tee /etc/mysql/conf.d/mysql.cnf <<-'EOF'
    [client]
    default-character-set=utf8
     
    [mysql]
    default-character-set=utf8
    EOF
    exit
    
  3. 使用Mysql管理工具(例如 Navcat),打开fastbee数据库,导入项目中的springboot/sql/fastbee.sql 脚本。

java

  1. 后端打包的文件fastbee-admin.jar上传到 /var/data/java 目录下

  2. 然后执行一下命令

    docker run \
    --name java \
    --publish 8080:8080 \
    --volume /var/data/java/fastbee-admin.jar:/server.jar \
    --volume /var/data/java/uploadPath:/uploadPath \
    --volume /var/data/java/logs:/logs \
    --volume /etc/localtime:/etc/localtime \
    --env "TZ=Asia/Shanghai" \
    --network fastbee-bridge \
    --restart unless-stopped \
    --detach \
    openjdk:8-jre \
    java -Duser.timezone=Asia/Shanghai -jar /server.jar
    

    说明:

    --name         # 容器名称
    --publish      # 容器端口映射
    --volume       # 挂载卷路径,容器文件持久化到服务器
    --env          # 设置容器环境变量
    --network      # 网络模式 container/none/bridge/host几种
    --restart      # 重启方式   no/on-failure/always/unless-stopped几种
    --detach       # 后台运行
    

emqx

执行一下命令安装emqx5.1

docker run \
--name emqx \
--publish 1883:1883 \
--publish 8083:8083 \
--publish 8883:8883 \
--publish 8084:8084 \
--publish 18083:18083 \
--env TimeZone=Asia/Shanghai \
--volume /etc/localtime:/etc/localtime \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
emqx:5.1

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jungle8884@163.com

×

喜欢就点赞,疼爱就打赏