feat: 添加 frpc sidecar 容器(内网穿透,随项目自动启动)

- docker-compose.dev.yml: 新增 frpc 服务,通过 .env 环境变量配置
- deploy/frpc.Dockerfile: 基于 Alpine 构建,下载 frp 0.68.1 二进制
- deploy/frpc-entrypoint.sh: 由环境变量生成 frpc.toml 配置文件
- .env.example: 环境变量说明(占位值,不含真实凭证)
- .gitignore: 忽略 .env 文件,防止敏感信息提交
This commit is contained in:
2026-07-09 11:53:04 +08:00
parent c86b517063
commit 2dcb43b717
5 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
#!/bin/sh
set -e
# 由环境变量生成 frpc.toml 配置
mkdir -p /etc/frp
# FRP_CUSTOM_DOMAINS 格式:逗号分隔的域名,如 "domain1.com,domain2.com"
# 脚本自动加引号
_domains=""
IFS=","
for _d in ${FRP_CUSTOM_DOMAINS}; do
_d=$(echo "$_d" | xargs)
if [ -n "$_domains" ]; then
_domains="$_domains, "
fi
_domains="$_domains\"$_d\""
done
unset IFS
cat > /etc/frp/frpc.toml <<EOF
serverAddr = "${FRP_SERVER_ADDR}"
serverPort = ${FRP_SERVER_PORT:-7000}
auth.token = "${FRP_AUTH_TOKEN}"
[[proxies]]
name = "${FRP_PROXY_NAME:-qa-backend}"
type = "http"
localIP = "${FRP_LOCAL_IP:-backend}"
localPort = ${FRP_LOCAL_PORT:-8100}
customDomains = [${_domains}]
EOF
echo "=== frpc config generated ==="
cat /etc/frp/frpc.toml
exec frpc -c /etc/frp/frpc.toml

View File

@@ -0,0 +1,17 @@
FROM docker.m.daocloud.io/library/alpine:3.19
ARG FRP_VERSION=0.68.1
RUN apk add --no-cache curl \
&& curl -sL "https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz" \
-o /tmp/frp.tar.gz \
&& tar xzf /tmp/frp.tar.gz -C /tmp \
&& cp /tmp/frp_${FRP_VERSION}_linux_amd64/frpc /usr/local/bin/frpc \
&& chmod +x /usr/local/bin/frpc \
&& rm -rf /tmp/frp_* /tmp/frp.tar.gz \
&& apk del curl
COPY deploy/frpc-entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]