File size: 4,027 Bytes
e4fbb50 0abcf01 e4fbb50 f0cbeae e4fbb50 b4dd3ad f0cbeae b4dd3ad 0069402 2d97948 1b6ef52 2d97948 3f73fdd 2d97948 7540d42 dbdd0ab c0f252f dbdd0ab b4dd3ad e4fbb50 ad5bc33 ee2de9f 66ed193 0069402 e4fbb50 66ed193 7a4fde2 2d97948 3f73fdd 7a4fde2 aa0785d 72eeb27 aa0785d 72eeb27 2d97948 e4fbb50 c52ae5c 343566f e4fbb50 8118bea b4dd3ad e4fbb50 b4dd3ad 59802b0 e4fbb50 b4dd3ad e4fbb50 2d97948 e4fbb50 1b6ef52 e4fbb50 2d97948 |
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# 使用 PostgreSQL 作为基础镜像
FROM nikolaik/python-nodejs:python3.12-nodejs20
# 添加维护者信息
LABEL maintainer="ai来事 <https://www.youtube.com/@all.ai.>"
ARG CACHEBUST=222
# 设置构建参数,提供默认值
ARG WEBHOOK_URL=https://你的hf账户名-空间名.hf.space/
ARG POSTGRESDB_PORT=5432
# 设置基本环境变量
ENV WEBHOOK_URL=${WEBHOOK_URL} \
N8N_HOST=0.0.0.0 \
N8N_PORT=7860 \
N8N_PROTOCOL=https \
GENERIC_TIMEZONE=Asia/Shanghai \
N8N_METRICS=true \
QUEUE_HEALTH_CHECK_ACTIVE=true \
N8N_PAYLOAD_SIZE_MAX=256 \
DB_TYPE=postgresdb \
DB_POSTGRESDB_PORT=${POSTGRESDB_PORT} \
VIRTUAL_ENV=/home/pn/venv \
PATH="/home/pn/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" \
# 添加 Qdrant 配置
QDRANT_HOST=http://localhost \
QDRANT_PORT=6333 \
QDRANT_VERSION=1.12.4 \
# 添加超时配置
WAIT_TIMEOUT=30 \
# 添加日志级别
N8N_LOG_LEVEL=info \
# python脚本curl请求
N8N_RUNNERS_AUTH_TOKEN="UU6z9vzs8ad+pIPDYmSDbud3gRs59XQ2" \
NODES_EXCLUDE="[]" \
N8N_RUNNERS_ENABLED=true \
N8N_RUNNERS_MODE=internal \
PY_ALLOW_LIST=requests \
PY_PACKAGES=requests
# 安装系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
unzip \
gnupg \
build-essential \
sudo \
vim \
git \
procps \
lsof \
net-tools \
ca-certificates \
openssl \
tzdata \
htop \
jq \
netcat-openbsd \
# 图片编辑模块
graphicsmagick \
# 添加中文字体支持
fonts-noto-cjk \
fonts-wqy-microhei \
fonts-wqy-zenhei \
fontconfig \
# redis 服务
redis-server \
&& ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& dpkg-reconfigure --frontend noninteractive tzdata \
# 更新字体缓存
&& fc-cache -fv \
# 下载并安装预编译的 Qdrant
&& cd /tmp \
&& curl -L https://github.com/qdrant/qdrant/releases/download/v${QDRANT_VERSION}/qdrant-x86_64-unknown-linux-gnu.tar.gz -o qdrant.tar.gz \
&& tar xvf qdrant.tar.gz \
&& mv qdrant /usr/local/bin/ \
&& rm qdrant.tar.gz \
# 创建 Qdrant 配置目录和数据目录
&& mkdir -p /home/pn/.n8n/qdrant/storage \
&& mkdir -p /home/pn/.n8n/qdrant/config \
&& mkdir -p /home/pn/.n8n/qdrant/snapshots \
&& chown -R pn:pn /home/pn/.n8n/qdrant \
&& chmod -R 755 /home/pn/.n8n/qdrant \
# 清理
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
# 创建虚拟环境并安装 Python 依赖
&& python3 -m venv $VIRTUAL_ENV \
&& $VIRTUAL_ENV/bin/pip install --no-cache-dir --upgrade pip requests yt-dlp \
# 安装python 插件
&& pip install Pillow \
# 安装 n8n
&& npm install -g n8n@1.117.2 pnpm --force \
&& npm cache clean --force
# 创建环境变量文件
RUN --mount=type=secret,id=POSTGRES_USER,mode=0444,required=true \
--mount=type=secret,id=POSTGRES_PASSWORD,mode=0444,required=true \
--mount=type=secret,id=POSTGRES_DB,mode=0444,required=true \
--mount=type=secret,id=POSTGRESDB_HOST,mode=0444,required=true \
echo "export DB_POSTGRESDB_HOST=$(cat /run/secrets/POSTGRESDB_HOST)" >> /home/pn/.env && \
echo "export DB_POSTGRESDB_USER=$(cat /run/secrets/POSTGRES_USER)" >> /home/pn/.env && \
echo "export DB_POSTGRESDB_PASSWORD=$(cat /run/secrets/POSTGRES_PASSWORD)" >> /home/pn/.env && \
echo "export DB_POSTGRESDB_DATABASE=$(cat /run/secrets/POSTGRES_DB)" >> /home/pn/.env && \
chown pn:pn /home/pn/.env
# 创建工作目录
WORKDIR /home/pn/n8n
# 复制启动脚本并创建数据目录
COPY --chown=pn:pn run.sh ./run.sh
COPY --chown=pn:pn config/n8n_env.sh ./config/n8n_env.sh
RUN chmod +x ./run.sh \
&& mkdir -p /home/pn/.n8n \
&& chown -R pn:pn /home/pn/.n8n \
&& chown -R pn:pn /home/pn/n8n
# 暴露端口
EXPOSE 7860
# 切换到非 root 用户
USER pn
# 设置数据卷
VOLUME ["/home/pn/.n8n"]
# 启动命令
CMD ["./run.sh"]
|