Files
crmchat/docker/php/entrypoint.sh
T
feng0207 9e8186e5d3 修复客服嵌入问题并更新前端构建产物
- 管理端前端设备判定改为按宽高比(嵌入竖屏容器时正确使用手机版布局)
- 统计上报跨源读取 parent.location 报错防护(降级用 referrer)
- 续接会话时校验客服在线,离线不再误入聊天页
- 聊天记录整理与消息发送的用户资料缺失空值防护,避免接口 400
- entrypoint 数据库导入加空库守卫,容器重启/线上更新不再重置数据
2026-09-25 22:15:01 +08:00

71 lines
2.4 KiB
Bash

#!/bin/bash
set -e
echo "==> Copying Docker swoole config..."
cp /tmp/swoole_docker.php /var/www/html/config/swoole.php
echo "==> Generating .env from environment variables..."
cat > /var/www/html/.env << ENVEOF
APP_DEBUG = true
APP_KEY = "base64:t6/NqsDlNuYSLcdgx//oSVIVBjtRCMa2D6k35Jizla4="
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = ${DB_HOSTNAME:-mysql}
DATABASE = ${DB_DATABASE:-crmeb_chat}
USERNAME = ${DB_USERNAME:-root}
PASSWORD = ${DB_PASSWORD:-root}
HOSTPORT = ${DB_PORT:-3306}
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
[REDIS]
REDIS_HOSTNAME = ${REDIS_HOSTNAME:-redis}
PORT = ${REDIS_PORT:-6379}
REDIS_PASSWORD = ${REDIS_PASSWORD:-}
SELECT = 0
ENVEOF
echo "==> Waiting for MySQL..."
until mysqladmin ping -h "${DB_HOSTNAME:-mysql}" -u "${DB_USERNAME:-root}" -p"${DB_PASSWORD:-root}" --silent 2>/dev/null; do
echo " MySQL not ready, retrying..."
sleep 2
done
echo " MySQL is ready!"
echo "==> Importing database schema..."
# 仅在空库(无任何业务表)时导入初始化 SQL,避免容器重启/线上更新代码时重置数据库。
# 如需重置数据:docker compose down -v 清掉数据卷后重新启动即可触发导入。
TABLE_COUNT=$(mysql -h "${DB_HOSTNAME:-mysql}" -u "${DB_USERNAME:-root}" -p"${DB_PASSWORD:-root}" -N -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='${DB_DATABASE:-crmeb_chat}';" 2>/dev/null || echo 0)
if [ "${TABLE_COUNT:-0}" != "0" ]; then
echo " Database already initialized (found ${TABLE_COUNT} tables), skipping import to protect existing data."
else
echo " Empty database detected, importing crmeb_clean.sql..."
mysql -h "${DB_HOSTNAME:-mysql}" -u "${DB_USERNAME:-root}" -p"${DB_PASSWORD:-root}" --default-character-set=utf8mb4 "${DB_DATABASE:-crmeb_chat}" < /var/www/html/public/install/crmeb_clean.sql 2>/dev/null && \
echo " Database schema imported." || \
echo " Database import failed."
fi
echo "==> Skipping install wizard..."
touch /var/www/html/public/install/install.lock
echo "==> Installing composer dependencies..."
cd /var/www/html
if [ ! -f vendor/autoload.php ]; then
composer install --no-interaction --no-dev --optimize-autoloader
else
echo " Vendors already installed."
fi
echo "==> Cleaning old Swoole PID files..."
rm -f /var/www/html/runtime/swoole.pid /var/www/html/runtime/swoole.log
echo "==> Starting Swoole HTTP server on 0.0.0.0:${SWOOLE_PORT:-20108}..."
exec php think swoole start