mirror of
https://gitee.com/ShopeX/ECShopX_docker
synced 2026-05-13 01:45:58 +08:00
84 lines
3.6 KiB
Bash
Executable File
84 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "开始初始化 ecshopx-api 服务..."
|
|
|
|
# 检查是否在正确的目录
|
|
if [ ! -f "docker-compose.yml" ]; then
|
|
echo "错误: 未找到 docker-compose.yml 文件,请在项目根目录运行此脚本"
|
|
exit 1
|
|
fi
|
|
|
|
# 等待 ecshopx-api 容器启动
|
|
echo "等待 ecshopx-api 服务启动..."
|
|
sleep 10
|
|
|
|
# 检查容器是否运行
|
|
if ! docker ps | grep -q ecshopx-api; then
|
|
echo "错误: ecshopx-api 容器未运行"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查 .env 文件是否存在,如果不存在从 .env.full 复制
|
|
ENV_FILE_EXISTS=$(docker exec ecshopx-api test -f /data/httpd/.env && echo "yes" || echo "no")
|
|
if [ "$ENV_FILE_EXISTS" = "no" ]; then
|
|
ENV_FULL_EXISTS=$(docker exec ecshopx-api test -f /data/httpd/.env.full && echo "yes" || echo "no")
|
|
if [ "$ENV_FULL_EXISTS" = "yes" ]; then
|
|
echo "复制 .env.full 到 .env..."
|
|
docker exec ecshopx-api cp /data/httpd/.env.full /data/httpd/.env
|
|
else
|
|
echo "错误: .env 和 .env.full 都不存在"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# 检查宿主机上的 ECShopX 目录是否已挂载(通过检查是否为空)
|
|
CONTAINER_FILE_COUNT=$(docker exec ecshopx-api ls -A /data/httpd/ 2>/dev/null | wc -l)
|
|
|
|
if [ "$CONTAINER_FILE_COUNT" -eq 0 ]; then
|
|
echo "警告: 容器内 /data/httpd 目录为空"
|
|
# 检查是否存在环境变量定义的目录
|
|
if [ -n "$ECShopX" ] && [ -d "$ECShopX" ]; then
|
|
echo "使用环境变量 ECShopX 定义的目录: $ECShopX"
|
|
# 因为使用环境变量,这里需要使用 docker cp 命令
|
|
docker cp $ECShopX/. ecshopx-api:/data/httpd/
|
|
else
|
|
echo "错误: ECShopX 环境变量未设置或指向的目录不存在"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "容器中检测到 $CONTAINER_FILE_COUNT 个文件,挂载可能正常"
|
|
fi
|
|
|
|
# 执行composer install
|
|
echo "在容器中运行 composer install..."
|
|
docker exec ecshopx-api sh -c "cd /data/httpd && chmod +x composer.phar && php composer.phar config repo.packagist composer https://mirrors.aliyun.com/composer/ && php -d memory_limit=-1 composer.phar install --optimize-autoloader"
|
|
|
|
|
|
# 安装必要的软件
|
|
echo "安装 Supervisor 和 Curl..."
|
|
docker exec ecshopx-api apk add --no-cache supervisor curl vim
|
|
|
|
echo "创建 Supervisor 配置目录...并启动"
|
|
docker exec ecshopx-api mkdir -p /etc/supervisor.d/
|
|
docker exec ecshopx-api sh -c "cp -r /data/httpd/docker-new/supervisor/* /etc/supervisor.d/ && cp /data/httpd/docker-new/supervisord.conf /etc/supervisord.conf"
|
|
docker exec ecshopx-api sh -c "supervisord -c /etc/supervisord.conf"
|
|
|
|
echo "设置存储目录权限..."
|
|
docker exec ecshopx-api sh -c "mkdir -p /data/httpd/storage/logs && mkdir -p /data/httpd/storage/framework/cache/laravel-excel && chown -R www-data:www-data /data/httpd/storage"
|
|
|
|
echo "修复数据库和 Redis 配置..."
|
|
docker exec ecshopx-api sed -i 's/DB_HOST=127.0.0.1/DB_HOST=mysql/g; s/REDIS_HOST=127.0.0.1/REDIS_HOST=redis/g' /data/httpd/.env
|
|
docker exec ecshopx-api sed -i 's/^DB_USERNAME=$/DB_USERNAME=root/g; s/^DB_PASSWORD=$/DB_PASSWORD=root/g; s/^DB_DATABASE=$/DB_DATABASE=ecshopx/g; s/^REDIS_PASSWORD=$/REDIS_PASSWORD=123456/g' /data/httpd/.env
|
|
|
|
echo "创建数据库..."
|
|
docker exec ecshopx-mysql mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS ecshopx CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
|
|
echo "生成应用密钥..."
|
|
docker exec -w /data/httpd ecshopx-api php artisan key:generate
|
|
|
|
echo "运行数据库迁移..."
|
|
docker exec -w /data/httpd ecshopx-api php artisan doctrine:migrations:migrate --force
|
|
|
|
echo "初始化完成!"
|
|
echo "所有服务现在应该正常运行。"
|
|
echo "您可以使用 'docker-compose ps' 检查服务状态。" |