feat(docker): 添加基本认证功能和环境变量配置

- 在 Dockerfile 中添加 htpasswd 工具和 dos2unix
- 更新 docker-compose.yml 文件以支持 ACCESS_USERNAME 和 ACCESS_PASSWORD 环境变量
- 修改 dev.md 和 README 文件,增加访问密码配置说明
- 更新 Nginx 配置以引入基本认证
- 将版本号更新至 1.0.6
This commit is contained in:
linshen
2025-05-27 23:14:49 +08:00
parent a9b11081f2
commit d849024cb1
12 changed files with 136 additions and 146 deletions

46
docker/generate-auth.sh Normal file
View File

@@ -0,0 +1,46 @@
#!/bin/sh
# 检查是否设置了ACCESS_PASSWORD环境变量
if [ -n "$ACCESS_PASSWORD" ]; then
# 检查密码是否为空字符串
if [ "$ACCESS_PASSWORD" = "" ]; then
echo "警告: 设置了空密码不安全。不启用Basic认证"
# 创建空的auth配置禁用认证
cat > /etc/nginx/conf.d/auth.conf << EOF
# Basic认证未启用 - 密码为空
auth_basic off;
EOF
exit 0
fi
echo "启用Basic认证..."
# 创建认证文件目录
mkdir -p /etc/nginx/auth
# 确定用户名如果未设置ACCESS_USERNAME则使用默认值"admin"
USERNAME=${ACCESS_USERNAME:-admin}
# 生成htpasswd文件 - 使用printf避免特殊字符问题
printf '%s' "$ACCESS_PASSWORD" | htpasswd -i -c /etc/nginx/auth/.htpasswd "$USERNAME"
# 容器环境中简化权限管理 - 确保所有人都可读取认证文件
chmod -R a+r /etc/nginx/auth
# 创建启用认证的配置
cat > /etc/nginx/conf.d/auth.conf << EOF
# 此文件由generate-auth.sh脚本自动生成
auth_basic "请输入访问凭据 (Please enter your credentials)";
auth_basic_user_file /etc/nginx/auth/.htpasswd;
EOF
echo "Basic认证已配置用户名: $USERNAME"
else
echo "未设置ACCESS_PASSWORD环境变量不启用Basic认证"
# 创建空的auth配置禁用认证
cat > /etc/nginx/conf.d/auth.conf << EOF
# Basic认证未启用
auth_basic off;
EOF
fi

View File

@@ -38,6 +38,9 @@ server {
# SPA应用路由支持
location / {
# 引入Basic认证配置
include /etc/nginx/conf.d/auth.conf;
try_files $uri $uri/ /index.html;
expires -1;
add_header Cache-Control "no-store, no-cache, must-revalidate";