File size: 3,211 Bytes
18b2392 71f6342 13d2229 51e73bc 13d2229 51e73bc 4758f02 c93dbc8 13d2229 c93dbc8 4758f02 13d2229 4758f02 71f6342 242b7bb 13d2229 242b7bb 7f49ed9 18b2392 242b7bb 13d2229 242b7bb 40c7d94 4dd70a2 c93dbc8 79c3846 da12040 40c7d94 c93dbc8 40c7d94 c93dbc8 79c3846 c93dbc8 301b134 79c3846 7f49ed9 79c3846 7f49ed9 997d703 7f49ed9 13cb3b2 71f6342 13d2229 71f6342 4758f02 0fa10f4 |
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 |
# 使用 PostgreSQL 官方镜像
FROM postgres:latest
# 后台中设置环境变量[settings中设置Variables]
ARG POSTGRES_USER
ARG POSTGRES_PASSWORD
ARG POSTGRES_DB
ARG WEBHOOK_URL
ARG requirements
ARG WORKDIR #//${WORKDIR:-/app}
ARG NODEJS_VER #//${NODEJS_VER:-20}
# 设置 n8n 环境变量
ENV N8N_HOST=0.0.0.0
ENV N8N_PORT=7860
ENV N8N_PROTOCOL=https
ENV WEBHOOK_URL=${WEBHOOK_URL:-https://aigenai-db.hf.space/}
ENV GENERIC_TIMEZONE=Asia/Shanghai
ENV N8N_METRICS=true
ENV QUEUE_HEALTH_CHECK_ACTIVE=true
ENV N8N_PAYLOAD_SIZE_MAX=256
# 设置N8N数据库连接信息
ENV DB_TYPE=postgresdb
ENV DB_POSTGRESDB_HOST=localhost
ENV DB_POSTGRESDB_PORT=5432
ENV DB_POSTGRESDB_USER=${POSTGRES_USER:-n8n}
ENV DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD:-n8n}
ENV DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-n8n}
# 设置其它环境变量
ENV VIRTUAL_ENV=/opt/venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# 将应用程序代码和启动脚本复制到容器中
COPY run.sh ${WORKDIR:-/app}/run.sh
# 切换到 root 用户进行安装和用户修改
USER root
# 设置脚本可执行权限
RUN chmod +x ${WORKDIR:-/app}/run.sh
# 更新包管理器并安装必要软件包,包括 Python3、venv、curl、Node.js、n8n
RUN apt-get update && apt-get install -y curl unzip gnupg build-essential sudo vim git procps lsof net-tools ca-certificates openssl tzdata python3-venv gosu && \
ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
dpkg-reconfigure --frontend noninteractive tzdata && \
# 安装必要应用
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip && \
unzip rclone-current-linux-amd64.zip && cd rclone-*-linux-amd64 && cp rclone /usr/bin/ && \
chown ${USER}:${USER} /usr/bin/rclone && chmod 755 /usr/bin/rclone && \
# 安装 Node.js 及 n8n
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs && \
npm install -g n8n && \
apt-get clean && rm -rf /var/lib/apt/lists/* && \
# 创建虚拟环境并安装 Python 包
python3 -m venv $VIRTUAL_ENV && \
$VIRTUAL_ENV/bin/pip install --upgrade pip && \
$VIRTUAL_ENV/bin/pip install ${requirements:-requests} && \
# 更改现有的 postgres 用户 UID 和 GID 为 1000
usermod -u 1000 postgres && groupmod -g 1000 postgres && \
# 修正数据库目录的所有者和组,确保新 UID 和 GID 能正常访问
chown -R postgres:postgres /var/lib/postgresql && \
chown -R postgres:postgres /var/run/postgresql
# 切换到 postgres 用户,初始化数据库并创建角色
USER postgres
# 初始化 PostgreSQL 数据库,并创建指定的用户角色和数据库
RUN initdb -D /var/lib/postgresql/data && \
pg_ctl start -D /var/lib/postgresql/data && \
psql --command "CREATE ROLE $POSTGRES_USER WITH LOGIN SUPERUSER PASSWORD '$POSTGRES_PASSWORD';" && \
createdb -O $POSTGRES_USER $POSTGRES_DB && \
pg_ctl stop -D /var/lib/postgresql/data
# 设置工作目录
WORKDIR ${WORKDIR:-/app}
# 启动容器时执行run.sh脚本
CMD ["./run.sh"]
# 设置健康检查以确保应用正常运行
HEALTHCHECK --interval=120s --timeout=10s --start-period=10s --retries=3 \
CMD curl -f http://localhost:7860/HEALTHZ || exit 1
|