GiteaDocker/deploy.sh

85 lines
2.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 部署Gitea的脚本
# 作者AI助手
# 日期2025-03-13
set -e
echo "===== 开始部署Gitea ====="
# 设置变量
DOMAIN="gitea.mzh.one"
DNMP_DIR="/opt/dnmp"
NGINX_CONF_DIR="$DNMP_DIR/services/nginx/conf.d"
SSL_DIR="$DNMP_DIR/services/nginx/ssl/$DOMAIN"
WWW_DIR="$DNMP_DIR/www"
# 自动检测MySQL容器
MYSQL_CONTAINER="mysql" # 默认MySQL容器名
AUTO_DETECT_MYSQL=$(docker ps | grep -E 'mysql|mariadb' | head -1 | awk '{print $1}')
if [ ! -z "$AUTO_DETECT_MYSQL" ]; then
DETECTED_MYSQL_NAME=$(docker inspect --format='{{.Name}}' $AUTO_DETECT_MYSQL | sed 's/\///')
MYSQL_CONTAINER=$DETECTED_MYSQL_NAME
echo "自动检测到MySQL容器: $MYSQL_CONTAINER"
fi
# 自动检测Nginx容器
NGINX_CONTAINER="nginx" # 默认Nginx容器名
AUTO_DETECT_NGINX=$(docker ps | grep nginx | head -1 | awk '{print $1}')
if [ ! -z "$AUTO_DETECT_NGINX" ]; then
DETECTED_NGINX_NAME=$(docker inspect --format='{{.Name}}' $AUTO_DETECT_NGINX | sed 's/\///')
NGINX_CONTAINER=$DETECTED_NGINX_NAME
echo "自动检测到Nginx容器: $NGINX_CONTAINER"
fi
# 1. 创建必要的目录
echo "1. 创建必要的目录..."
mkdir -p conf/nginx/conf.d conf/gitea data/gitea data/mysql
mkdir -p $SSL_DIR
mkdir -p $WWW_DIR
# 2. 确保MySQL数据库已准备好
echo "2. 准备MySQL数据库..."
# 假设MySQL已经在DNMP环境中运行
# 创建gitea数据库和用户
cat <<EOF > create_db.sql
CREATE DATABASE IF NOT EXISTS gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'gitea'@'%' IDENTIFIED BY 'gitea_password';
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'%';
FLUSH PRIVILEGES;
EOF
echo "请手动执行以下命令创建数据库(如果尚未创建):"
echo "docker exec -i $MYSQL_CONTAINER mysql -uroot -p < create_db.sql"
# 3. 申请SSL证书
echo "3. 申请SSL证书..."
echo "请确保域名$DOMAIN已正确解析到服务器IP"
echo "请手动执行以下命令申请证书:"
echo "certbot certonly --webroot -w $WWW_DIR -d $DOMAIN"
echo "然后复制证书到指定目录:"
echo "cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem $SSL_DIR/$DOMAIN.pem"
echo "cp /etc/letsencrypt/live/$DOMAIN/privkey.pem $SSL_DIR/$DOMAIN.key"
# 4. 启动Gitea服务
echo "4. 启动Gitea服务..."
docker-compose up -d
echo "5. 配置Nginx..."
# 假设Nginx配置文件已经创建好
echo "请确保Nginx配置文件已正确加载"
echo "请将gitea.conf复制到DNMP的nginx配置目录"
echo "cp conf/nginx/conf.d/$DOMAIN.conf $NGINX_CONF_DIR/"
echo "然后重启Nginxdocker exec -it $NGINX_CONTAINER nginx -s reload"
echo "===== Gitea部署完成 ====="
echo "请访问 https://$DOMAIN 完成初始化设置"
echo "初始化时,请使用以下数据库设置:"
echo "数据库类型MySQL"
echo "主机:$MYSQL_CONTAINER:3306"
echo "用户名gitea"
echo "密码gitea_password"
echo "数据库名gitea"
echo "注意首次访问时您将被引导完成Gitea的初始化设置包括创建管理员账户"