sllwakeup/kefu

By sllwakeup

Updated 4 months ago

crmchat 客服系统 docker 部署

Image
Networking
Integration & delivery
Monitoring & observability
0

1.1K

sllwakeup/kefu repository overview

注意事项:
1、官方仓库地址:https://gitee.com/ZhongBangKeJi/CRMChat.git
2、克隆下载后只保留 public/install 安装器即可。
   若想持久化上传图片,app中volumes:下补充:- ./public/uploads:/var/www/public/uploads
3、首次生成配置后,.env中尽量不要存在  引号  ,可自行更改,生成后配后重启即可。
4、首次进入建议在设置中更换密钥。
5、持久化配置创建后放到对应的目录即可。
6、进入后台设置,将网站地址改成:http://127.0.0.1:8001(也就是:ip:端口)。
   通过改完的地址访问,图片才能正常上传更改。
   上传等待几秒更新完缓存,可手动浏览器刷新后正常显示。
7、目录结构:(当前只列出外层文件夹)
   docker-compose.yml
   docker
       logs
       nginx
       mysql
       redis
   public
       install
   .env
8、执行命令(全部配置好后):
   启动:docker compose up -d
   停止:docker compose down

注释:如果出现显示已经重复启动的错误,可以 进入runtime文件下查看swoole.pid文件进行处理,可以删除或者清空该文件。
配置填写示例1 配置填写示例2
services:
  app:
    image: sllwakeup/kefu:latest
    container_name: crmchat-app
    restart: unless-stopped
    tty: true
    environment:
      # 数据库
      DB_CONNECTION: mysql
      DB_HOST: mysql
      DB_PORT: 3306
      DB_DATABASE: crmeb
      DB_USERNAME: root
      DB_PASSWORD: root
      # Redis
      CACHE_DRIVER: redis
      QUEUE_CONNECTION: redis
      SESSION_DRIVER: redis
      REDIS_HOST: redis
      REDIS_PORT: 6379
      # 日志
      LOG_CHANNEL: file
      LOG_LEVEL: info
      # 时区
      TZ: Asia/Shanghai
    working_dir: /var/www
    volumes:
      - ./.env:/var/www/.env
      - ./docker/logs/php:/var/log/php
      - ./public/install:/var/www/public/install
      - ./public/uploads:/var/www/public/uploads
      - ./runtime:/var/www/runtime
    command: bash -c "rm -f /var/www/runtime/swoole.pid && php think swoole restart"
    networks:
      - crmchat-network
    depends_on:
      - mysql
      - redis
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 1G
    healthcheck:
      test: [ "CMD", "bash", "-c", "ps aux | grep 'swoole_http_server' | grep -v grep && netstat -tulnp | grep 20108" ]
      interval: 30s  # 每 30 秒检查一次
      timeout: 10s   # 检查命令超时时间(10 秒内未完成视为失败)
      retries: 3     # 连续 3 次检查失败,视为容器不健康
      start_period: 60s  # 容器启动后,等待 60 秒再开始检查(给 Swoole 启动时间)

  redis:
    image: redis:6-alpine
    container_name: crmchat-redis
    restart: unless-stopped
    ports:
      - "16378:6379"
    volumes:
      - ./docker/redis/data:/data
      - ./docker/logs/redis:/var/log/redis
    tty: true
    networks:
      - crmchat-network
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

  mysql:
    image: mysql:8.0
    container_name: crmchat-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: crmeb
      MYSQL_CHARACTER_SET_SERVER: utf8mb4
      MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
    ports:
      - "33067:3306"
    volumes:
      - ./docker/mysql/data:/var/lib/mysql/
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/logs/mysql:/var/log/mysql
    tty: true
    networks:
      - crmchat-network
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 1G

  nginx:
    image: nginx:alpine
    container_name: crmchat-nginx
    restart: unless-stopped
    ports:
      - "8001:80"
    depends_on:
      - app
    volumes:
      - ./docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
      - ./docker/logs/nginx:/www/wwwlogs
    tty: true
    networks:
      - crmchat-network
    deploy:
      resources:
        limits:
          cpus: '0.3'
          memory: 128M

# ======================== 网络配置 ========================
networks:
  crmchat-network:
    driver: bridge
.env

APP_DEBUG = false
APP_KEY = "base64:EAZi4pFIwvoC5KD9fMcQKQSlhKzsAS5xG+JPd4878vY="

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = mysql
HOSTPORT = 3306
USERNAME = root
PASSWORD = root
DATABASE = crmeb
PREFIX = eb_
CHARSET = utf8
CHARSET = utf8mb4
DEBUG = true

[REDIS]
REDIS_HOSTNAME = redis
PORT = 6379
REDIS_PASSWORD = 
SELECT = 0

[CACHE]
PREFIX = 
TAG_PREFIX = 


[LANG]
default_lang = zh-cn

[swoole]
SWOOLE_DAEMONIZE = false

my.cnf (mysql 目录下)

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

[mysqld_safe]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp

lc-messages-dir    = /usr/share/mysql
explicit_defaults_for_timestamp
skip-grant-tables
lower_case_table_names = 1
character-set-server   = utf8
collation-server       = utf8_unicode_ci
sql-mode               = NO_ENGINE_SUBSTITUTION
log-error              = /var/log/mysql/error.log
sql_mode               = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links         = 0
!includedir /etc/mysql/conf.d/

default.conf (nginx 目录下)

server {
    listen 80;
    index index.php index.html;
    server_name _;
    root /var/www/crmchat/public;

    location / {
        proxy_pass http://app:20108;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        add_header X-Cache $upstream_cache_status;
        add_header Cache-Control no-cache;
    }
}

Tag summary

Content type

Image

Digest

sha256:a3e6ef05f

Size

424.1 MB

Last updated

4 months ago

docker pull sllwakeup/kefu:1.0.3