clash / Dockerfile
clash-linux's picture
Upload 12 files
fd02cb6 verified
raw
history blame
1.85 kB
# 使用官方Python 3.9 Alpine作为基础镜像(轻量级)
FROM python:3.9-alpine
# 设置工作目录
WORKDIR /app
# 安装系统依赖
RUN apk add --no-cache \
curl \
ca-certificates \
tzdata \
tar \
gzip \
# 添加编译PyYAML所需的依赖
gcc \
musl-dev \
python3-dev \
yaml-dev
# 设置时区为亚洲/上海
ENV TZ=Asia/Shanghai
# 创建必要的目录
RUN mkdir -p ./clash_core ./subconverter ./data
# 下载并安装Clash Meta (替代Clash Core,功能更强大)
RUN curl -L -o /tmp/clash-meta.gz "https://github.com/MetaCubeX/Clash.Meta/releases/download/v1.16.0/clash.meta-linux-amd64-v1.16.0.gz" && \
gunzip -c /tmp/clash-meta.gz > ./clash_core/clash-linux-amd64 && \
chmod +x ./clash_core/clash-linux-amd64 && \
rm /tmp/clash-meta.gz
# 下载并安装subconverter
RUN curl -L -o /tmp/subconverter.tar.gz "https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz" && \
tar -xzf /tmp/subconverter.tar.gz -C /tmp && \
cp -R /tmp/subconverter/* ./subconverter/ && \
chmod +x ./subconverter/subconverter && \
rm -rf /tmp/subconverter*
# 复制Python依赖列表
COPY requirements.txt ./
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt
# 清理不再需要的构建依赖,减小镜像大小
RUN apk del gcc musl-dev python3-dev yaml-dev
# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
FLASK_APP=app.main \
FLASK_ENV=production
# 复制应用代码
COPY app/ ./app/
# 复制启动脚本并赋予执行权限
COPY entrypoint.sh ./
RUN chmod +x ./entrypoint.sh
# 暴露单一端口 (Hugging Face Spaces要求)
EXPOSE 7860
# 使用entrypoint脚本启动应用
ENTRYPOINT ["/app/entrypoint.sh"]