Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ RUN apk add --no-cache apache2-utils dos2unix supervisor nodejs npm gettext curl
# 安装pnpm
RUN npm install -g pnpm

# 复制Nginx配置
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
# 复制Nginx配置模板
COPY docker/nginx.conf.template /etc/nginx/conf.d/nginx.conf.template

# 复制Web应用
COPY --from=build /app/packages/web/dist /usr/share/nginx/html
Expand All @@ -41,18 +41,15 @@ WORKDIR /app/mcp-server

# 复制并设置启动脚本
COPY docker/generate-config.sh /docker-entrypoint.d/40-generate-config.sh
COPY docker/generate-auth.sh /docker-entrypoint.d/30-generate-auth.sh
COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY docker/start-services.sh /start-services.sh

# 确保脚本有执行权限
RUN chmod +x /docker-entrypoint.d/40-generate-config.sh
RUN chmod +x /docker-entrypoint.d/30-generate-auth.sh
RUN chmod +x /start-services.sh

# 转换可能的Windows行尾符为Unix格式
RUN dos2unix /docker-entrypoint.d/40-generate-config.sh
RUN dos2unix /docker-entrypoint.d/30-generate-auth.sh
RUN dos2unix /start-services.sh

EXPOSE 80
Expand Down
46 changes: 0 additions & 46 deletions docker/generate-auth.sh

This file was deleted.

78 changes: 72 additions & 6 deletions docker/generate-config.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#!/bin/sh

# 配置文件路径
CONFIG_FILE="/usr/share/nginx/html/config.js"

# 生成配置文件
cat > $CONFIG_FILE << EOF
# 生成前端运行时配置文件
generate_frontend_config() {
CONFIG_FILE="/usr/share/nginx/html/config.js"
cat > $CONFIG_FILE << EOF
window.runtime_config = {
OPENAI_API_KEY: "${VITE_OPENAI_API_KEY:-}",
GEMINI_API_KEY: "${VITE_GEMINI_API_KEY:-}",
Expand All @@ -17,4 +17,70 @@ window.runtime_config = {
console.log("运行时配置已加载");
EOF

echo "配置文件已生成: $CONFIG_FILE"
echo "配置文件已生成: $CONFIG_FILE"
}

# 生成认证配置
generate_auth() {
if [ -n "$ACCESS_PASSWORD" ]; then
if [ "$ACCESS_PASSWORD" = "" ]; then
echo "警告: 设置了空密码,不安全。不启用Basic认证"
create_auth_config "off"
return
fi

echo "启用Basic认证..."

mkdir -p /etc/nginx/auth
USERNAME=${ACCESS_USERNAME:-admin}

printf '%s' "$ACCESS_PASSWORD" | htpasswd -i -c /etc/nginx/auth/.htpasswd "$USERNAME"
chmod -R a+r /etc/nginx/auth

create_auth_config "on" "$USERNAME"
else
echo "未设置ACCESS_PASSWORD环境变量,不启用Basic认证"
create_auth_config "off"
fi
}

# 创建认证配置文件
create_auth_config() {
local auth_enabled=$1
local username=$2

if [ "$auth_enabled" = "on" ]; then
cat > /etc/nginx/conf.d/auth.conf << EOF
# 此文件由启动脚本自动生成
auth_basic "请输入访问凭据 (Please enter your credentials)";
auth_basic_user_file /etc/nginx/auth/.htpasswd;
EOF
echo "Basic认证已配置,用户名: $username"
export AUTH_CONFIG="include /etc/nginx/conf.d/auth.conf;"
else
cat > /etc/nginx/conf.d/auth.conf << EOF
# Basic认证未启用
auth_basic off;
EOF
export AUTH_CONFIG=""
fi
}

# 生成nginx配置
generate_nginx_config() {
echo "正在生成nginx配置..."
envsubst '${NGINX_PORT},${AUTH_CONFIG}' < /etc/nginx/conf.d/nginx.conf.template > /etc/nginx/conf.d/default.conf
echo "Nginx配置已生成"
}

# 主执行流程
echo "正在生成前端配置文件..."
generate_frontend_config

echo "正在配置认证..."
generate_auth

echo "正在生成nginx配置..."
generate_nginx_config

echo "配置生成完成"
2 changes: 1 addition & 1 deletion docker/nginx.conf → docker/nginx.conf.template
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ server {
# SPA应用路由支持
location / {
# 引入Basic认证配置
include /etc/nginx/conf.d/auth.conf;
${AUTH_CONFIG}

try_files $uri $uri/ /index.html;
expires -1;
Expand Down
6 changes: 1 addition & 5 deletions docker/start-services.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@
# 创建日志目录
mkdir -p /var/log/supervisor

# 处理nginx配置文件中的环境变量
echo "Processing nginx configuration with environment variables..."
envsubst '${NGINX_PORT}' < /etc/nginx/conf.d/default.conf > /tmp/nginx.conf
mv /tmp/nginx.conf /etc/nginx/conf.d/default.conf
echo "Nginx configuration updated with NGINX_PORT=${NGINX_PORT}"
# nginx配置已由generate-config.sh处理

# 运行原有的nginx初始化脚本
echo "Running nginx initialization scripts..."
Expand Down