gallyga commited on
Commit
672cb2e
·
verified ·
1 Parent(s): 5adf843

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +110 -0
Dockerfile ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 使用 PostgreSQL 作为基础镜像
2
+ FROM nikolaik/python-nodejs:python3.12-nodejs20
3
+
4
+ # 添加维护者信息
5
+ LABEL maintainer="ai来事 <https://www.youtube.com/@all.ai.>"
6
+
7
+ ARG CACHEBUST=222
8
+
9
+ # 设置构建参数,提供默认值
10
+ ARG WEBHOOK_URL=https://你的hf账户名-空间名.hf.space/
11
+ ARG POSTGRESDB_PORT=5432
12
+
13
+ # 设置基本环境变量
14
+ ENV WEBHOOK_URL=${WEBHOOK_URL} \
15
+ N8N_HOST=0.0.0.0 \
16
+ N8N_PORT=7860 \
17
+ N8N_PROTOCOL=https \
18
+ GENERIC_TIMEZONE=Asia/Shanghai \
19
+ N8N_METRICS=true \
20
+ QUEUE_HEALTH_CHECK_ACTIVE=true \
21
+ N8N_PAYLOAD_SIZE_MAX=256 \
22
+ DB_TYPE=postgresdb \
23
+ DB_POSTGRESDB_PORT=${POSTGRESDB_PORT} \
24
+ VIRTUAL_ENV=/home/pn/venv \
25
+ PATH="/home/pn/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" \
26
+ # 添加 Qdrant 配置
27
+ QDRANT_HOST=http://localhost \
28
+ QDRANT_PORT=6333 \
29
+ QDRANT_VERSION=1.12.4 \
30
+ # 添加超时配置
31
+ WAIT_TIMEOUT=30 \
32
+ # 添加日志级别
33
+ N8N_LOG_LEVEL=info
34
+
35
+ # 安装系统依赖
36
+ RUN apt-get update && apt-get install -y --no-install-recommends \
37
+ curl \
38
+ unzip \
39
+ gnupg \
40
+ build-essential \
41
+ sudo \
42
+ vim \
43
+ git \
44
+ procps \
45
+ lsof \
46
+ net-tools \
47
+ ca-certificates \
48
+ openssl \
49
+ tzdata \
50
+ htop \
51
+ jq \
52
+ netcat-openbsd \
53
+ redis-server \
54
+ && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
55
+ && dpkg-reconfigure --frontend noninteractive tzdata \
56
+ # 下载并安装预编译的 Qdrant
57
+ && cd /tmp \
58
+ && curl -L https://github.com/qdrant/qdrant/releases/download/v${QDRANT_VERSION}/qdrant-x86_64-unknown-linux-gnu.tar.gz -o qdrant.tar.gz \
59
+ && tar xvf qdrant.tar.gz \
60
+ && mv qdrant /usr/local/bin/ \
61
+ && rm qdrant.tar.gz \
62
+ # 创建 Qdrant 配置目录和数据目录
63
+ && mkdir -p /home/pn/.n8n/qdrant/storage \
64
+ && mkdir -p /home/pn/.n8n/qdrant/config \
65
+ && mkdir -p /home/pn/.n8n/qdrant/snapshots \
66
+ && chown -R pn:pn /home/pn/.n8n/qdrant \
67
+ && chmod -R 755 /home/pn/.n8n/qdrant \
68
+ # 清理
69
+ && apt-get clean \
70
+ && rm -rf /var/lib/apt/lists/* \
71
+ # 创建虚拟环境并安装 Python 依赖
72
+ && python3 -m venv $VIRTUAL_ENV \
73
+ && $VIRTUAL_ENV/bin/pip install --no-cache-dir --upgrade pip requests yt-dlp \
74
+ # 安装 n8n
75
+ && npm install -g n8n@latest pnpm \
76
+ && npm cache clean --force
77
+
78
+ # 创建环境变量文件
79
+ RUN --mount=type=secret,id=POSTGRES_USER,mode=0444,required=true \
80
+ --mount=type=secret,id=POSTGRES_PASSWORD,mode=0444,required=true \
81
+ --mount=type=secret,id=POSTGRES_DB,mode=0444,required=true \
82
+ --mount=type=secret,id=POSTGRESDB_HOST,mode=0444,required=true \
83
+ echo "export DB_POSTGRESDB_HOST=$(cat /run/secrets/POSTGRESDB_HOST)" >> /home/pn/.env && \
84
+ echo "export DB_POSTGRESDB_USER=$(cat /run/secrets/POSTGRES_USER)" >> /home/pn/.env && \
85
+ echo "export DB_POSTGRESDB_PASSWORD=$(cat /run/secrets/POSTGRES_PASSWORD)" >> /home/pn/.env && \
86
+ echo "export DB_POSTGRESDB_DATABASE=$(cat /run/secrets/POSTGRES_DB)" >> /home/pn/.env && \
87
+ chown pn:pn /home/pn/.env
88
+
89
+ # 创建工作目录
90
+ WORKDIR /home/pn/n8n
91
+
92
+ # 复制启动脚本并创建数据目录
93
+ COPY --chown=pn:pn run.sh ./run.sh
94
+ COPY --chown=pn:pn config/n8n_env.sh ./config/n8n_env.sh
95
+ RUN chmod +x ./run.sh \
96
+ && mkdir -p /home/pn/.n8n \
97
+ && chown -R pn:pn /home/pn/.n8n \
98
+ && chown -R pn:pn /home/pn/n8n
99
+
100
+ # 暴露端口
101
+ EXPOSE 7860
102
+
103
+ # 切换到非 root 用户
104
+ USER pn
105
+
106
+ # 设置数据卷
107
+ VOLUME ["/home/pn/.n8n"]
108
+
109
+ # 启动命令
110
+ CMD ["./run.sh"]