hijnu commited on
Commit
7ba33e3
·
verified ·
1 Parent(s): 1c06cb9

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +28 -39
Dockerfile CHANGED
@@ -1,23 +1,4 @@
1
- # 基础构建阶段:使用 Node.js 镜像并安装 Python3 和虚拟环境
2
- FROM node:20-slim AS builder
3
-
4
- # 设置构建时变量
5
- ARG requirements="requests yt-dlp"
6
- ARG PACKAGES="n8n"
7
- ARG WORKDIR=/app
8
-
9
- # 安装 Python3、venv 以及必要的系统工具
10
- RUN apt-get update && apt-get install -y python3 python3-venv curl gnupg build-essential && \
11
- npm install -g $PACKAGES && \
12
- apt-get clean && rm -rf /var/lib/apt/lists/*
13
-
14
- # 设置 Python 虚拟环境
15
- ENV VIRTUAL_ENV=$WORKDIR/venv
16
- RUN python3 -m venv $VIRTUAL_ENV && \
17
- $VIRTUAL_ENV/bin/pip install --upgrade pip && \
18
- $VIRTUAL_ENV/bin/pip install $requirements
19
-
20
- # 主运行阶段:基于较小的 PostgreSQL 镜像
21
  FROM postgres:latest
22
 
23
  # 设置构建时变量
@@ -30,7 +11,8 @@ ARG WEBHOOK_URL=https://aigenai-db.hf.space/
30
  ARG WORKDIR=/app
31
  ARG DB_IMPORT=no
32
  ARG NODEJS_VER=20
33
- ARG PACKAGES="n8n"
 
34
 
35
  # 设置环境变量
36
  ENV POSTGRES_USER=${POSTGRES_USER} \
@@ -51,26 +33,31 @@ ENV POSTGRES_USER=${POSTGRES_USER} \
51
  DB_POSTGRESDB_USER=${POSTGRES_USER} \
52
  DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} \
53
  DB_POSTGRESDB_DATABASE=${POSTGRES_DB} \
54
- VIRTUAL_ENV=$WORKDIR/venv
55
- ENV PATH="$VIRTUAL_ENV/bin:/usr/local/lib/node_modules/n8n/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
56
 
57
- # 复制构建阶段的 Node.js、npm 和 n8n
58
- COPY --from=builder /usr/local/bin/node /usr/local/bin/
59
- COPY --from=builder /usr/local/bin/npm /usr/local/bin/
60
- COPY --from=builder /usr/local/lib/node_modules /usr/local/lib/node_modules
61
- # 复制构建阶段的 Python 运行环境
62
- COPY --from=builder $VIRTUAL_ENV $VIRTUAL_ENV
63
-
64
- # 安装必要的软件包并设置时区
65
  RUN apt-get update && apt-get install -y \
66
  curl unzip gnupg build-essential sudo vim git procps lsof net-tools \
67
- ca-certificates openssl tzdata python3-venv gosu \
68
  htop jq wget && \
 
 
 
 
 
 
69
  ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
70
- dpkg-reconfigure --frontend noninteractive tzdata
 
 
 
 
71
 
72
- # 安装 rclone
73
- RUN curl https://rclone.org/install.sh | bash
 
 
74
 
75
  # 设置工作目录并复制启动脚本
76
  WORKDIR ${WORKDIR}
@@ -81,13 +68,15 @@ RUN chmod +x ${WORKDIR}/run.sh /docker-entrypoint-initdb.d/import-db.sh
81
  # 更改现有的 postgres 用户 UID 和 GID 为 1000
82
  USER root
83
  RUN usermod -u 1000 postgres && groupmod -g 1000 postgres && \
84
- chown -R postgres:postgres /var/lib/postgresql && chown -R postgres:postgres /var/run/postgresql && \
85
- chown -R postgres:postgres $WORKDIR && mkdir -p $WORKDIR/backups && chmod -R 775 $WORKDIR/backups
86
-
 
 
87
  # 切换到 postgres 用户
88
  USER postgres
89
 
90
- # 健康检查配置(可选)
91
  HEALTHCHECK --interval=120s --timeout=10s --start-period=10s --retries=3 \
92
  CMD curl -f http://localhost:7860/HEALTHZ || exit 1
93
 
 
1
+ # 使用 PostgreSQL 作为基础镜像
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  FROM postgres:latest
3
 
4
  # 设置构建时变量
 
11
  ARG WORKDIR=/app
12
  ARG DB_IMPORT=no
13
  ARG NODEJS_VER=20
14
+ ARG NODE_PACKAGES="n8n"
15
+ ARG PYTHON_PACKAGES="requests yt-dlp"
16
 
17
  # 设置环境变量
18
  ENV POSTGRES_USER=${POSTGRES_USER} \
 
33
  DB_POSTGRESDB_USER=${POSTGRES_USER} \
34
  DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} \
35
  DB_POSTGRESDB_DATABASE=${POSTGRES_DB} \
36
+ VIRTUAL_ENV=$WORKDIR/venv \
37
+ PATH="$WORKDIR/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
38
 
39
+ # 安装必要的软件包、Node.js,Python,并设置时区
 
 
 
 
 
 
 
40
  RUN apt-get update && apt-get install -y \
41
  curl unzip gnupg build-essential sudo vim git procps lsof net-tools \
42
+ ca-certificates openssl tzdata python3 python3-venv python3-pip gosu \
43
  htop jq wget && \
44
+ # 安装 Node.js
45
+ curl -fsSL https://deb.nodesource.com/setup_${NODEJS_VER}.x | bash - && \
46
+ apt-get install -y nodejs && \
47
+ # 安装全局 Node.js 包
48
+ npm install -g ${NODE_PACKAGES} && \
49
+ # 设置时区
50
  ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
51
+ dpkg-reconfigure --frontend noninteractive tzdata && \
52
+ # 安装 rclone
53
+ curl https://rclone.org/install.sh | bash && \
54
+ # 清理 apt 缓存
55
+ apt-get clean && rm -rf /var/lib/apt/lists/*
56
 
57
+ # 设置 Python 虚拟环境
58
+ RUN python3 -m venv $VIRTUAL_ENV && \
59
+ $VIRTUAL_ENV/bin/pip install --upgrade pip && \
60
+ $VIRTUAL_ENV/bin/pip install ${PYTHON_PACKAGES}
61
 
62
  # 设置工作目录并复制启动脚本
63
  WORKDIR ${WORKDIR}
 
68
  # 更改现有的 postgres 用户 UID 和 GID 为 1000
69
  USER root
70
  RUN usermod -u 1000 postgres && groupmod -g 1000 postgres && \
71
+ chown -R postgres:postgres /var/lib/postgresql && \
72
+ chown -R postgres:postgres /var/run/postgresql && \
73
+ chown -R postgres:postgres $WORKDIR && \
74
+ mkdir -p $WORKDIR/backups && chmod -R 775 $WORKDIR/backups
75
+
76
  # 切换到 postgres 用户
77
  USER postgres
78
 
79
+ # 健康检查配置
80
  HEALTHCHECK --interval=120s --timeout=10s --start-period=10s --retries=3 \
81
  CMD curl -f http://localhost:7860/HEALTHZ || exit 1
82