-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathDockerfile.release
More file actions
79 lines (66 loc) · 2.27 KB
/
Dockerfile.release
File metadata and controls
79 lines (66 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# InfoStream Release Dockerfile
# 基于 Python 3.11 官方镜像 - 发布版本
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 设置环境变量
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1 \
TZ=Asia/Shanghai
# 安装系统依赖和工具(仅保留必要依赖)
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
g++ \
tzdata \
ca-certificates \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖文件
COPY requirements.txt .
# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码(仅生产相关文件)
COPY src/ ./src/
COPY static/ ./static/
COPY start.sh ./
# 仅复制生产环境配置文件(仅两个prod文件)
RUN mkdir -p config/workflows
COPY config/workflows/github_ai_daily_prod.yaml ./config/workflows/
COPY config/workflows/reddit_ai_daily_prod.yaml ./config/workflows/
# 压缩打包整个workflows目录到/app目录下
RUN cd config && \
tar -czf /app/workflows_backup.tar.gz workflows/ && \
cd /app && \
echo "✅ workflows目录已压缩备份到 /app/workflows_backup.tar.gz" && \
ls -lh workflows_backup.tar.gz
# 创建必要的目录
RUN mkdir -p data/executions logs static
# 压缩打包整个项目目录到/app目录下(排除.git和node_modules等)
RUN if [ -d /app ]; then \
cd / && \
tar --exclude='.git' \
--exclude='node_modules' \
--exclude='__pycache__' \
--exclude='*.pyc' \
--exclude='.pytest_cache' \
--exclude='venv' \
--exclude='.env' \
--exclude='*.log' \
-czf /app/project_backup.tar.gz app/ && \
cd /app && \
echo "✅ 整个项目目录已压缩备份到 /app/project_backup.tar.gz" && \
ls -lh project_backup.tar.gz && \
echo "📦 压缩包内容预览:" && \
tar -tzf project_backup.tar.gz | head -20; \
else \
echo "⚠️ 项目目录不存在,跳过压缩备份"; \
fi
# 设置启动脚本权限
RUN chmod +x start.sh
# 暴露端口(仅保留应用端口)
EXPOSE 8000
# 启动应用
CMD ["./start.sh"]