Spaces:
Sleeping
Sleeping
Update Dockerfile
Browse files- Dockerfile +55 -17
Dockerfile
CHANGED
@@ -1,18 +1,56 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
# n8n:
|
4 |
-
image: docker.n8n.io/n8nio/n8n:1.64.3
|
5 |
-
restart: always
|
6 |
-
environment:
|
7 |
-
- N8N_HOST=${N8N_HOST}
|
8 |
-
- N8N_PORT=${N8N_PORT}
|
9 |
-
- N8N_PROTOCOL=http
|
10 |
-
- NODE_ENV=production
|
11 |
-
- WEBHOOK_URL=https://${N8N_HOST}/
|
12 |
-
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
|
13 |
-
- N8N_SECURE_COOKIE=false
|
14 |
-
volumes:
|
15 |
-
- n8n_data:/home/node/.n8n
|
16 |
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ARG NODE_VERSION=20
|
2 |
+
FROM n8nio/base:${NODE_VERSION}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
+
ARG N8N_VERSION
|
5 |
+
RUN if [ -z "$N8N_VERSION" ] ; then echo "The N8N_VERSION argument is missing!" ; exit 1; fi
|
6 |
+
|
7 |
+
LABEL org.opencontainers.image.title="n8n"
|
8 |
+
LABEL org.opencontainers.image.description="Workflow Automation Tool"
|
9 |
+
LABEL org.opencontainers.image.source="https://github.com/n8n-io/n8n"
|
10 |
+
LABEL org.opencontainers.image.url="https://n8n.io"
|
11 |
+
LABEL org.opencontainers.image.version=${N8N_VERSION}
|
12 |
+
|
13 |
+
ENV N8N_VERSION=${N8N_VERSION}
|
14 |
+
ENV NODE_ENV=production
|
15 |
+
ENV N8N_RELEASE_TYPE=stable
|
16 |
+
RUN set -eux; \
|
17 |
+
npm install -g --omit=dev n8n@${N8N_VERSION} --ignore-scripts && \
|
18 |
+
npm rebuild --prefix=/usr/local/lib/node_modules/n8n sqlite3 && \
|
19 |
+
rm -rf /usr/local/lib/node_modules/n8n/node_modules/@n8n/chat && \
|
20 |
+
rm -rf /usr/local/lib/node_modules/n8n/node_modules/n8n-design-system && \
|
21 |
+
rm -rf /usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/node_modules && \
|
22 |
+
find /usr/local/lib/node_modules/n8n -type f -name "*.ts" -o -name "*.js.map" -o -name "*.vue" | xargs rm -f && \
|
23 |
+
rm -rf /root/.npm
|
24 |
+
|
25 |
+
# Setup the Task Runner Launcher
|
26 |
+
ARG TARGETPLATFORM
|
27 |
+
ARG LAUNCHER_VERSION=0.1.1
|
28 |
+
ENV N8N_RUNNERS_MODE=internal_launcher \
|
29 |
+
N8N_RUNNERS_LAUNCHER_PATH=/usr/local/bin/task-runner-launcher
|
30 |
+
COPY n8n-task-runners.json /etc/n8n-task-runners.json
|
31 |
+
# First, download, verify, then extract the launcher binary
|
32 |
+
# Second, chmod with 4555 to allow the use of setuid
|
33 |
+
# Third, create a new user and group to execute the Task Runners under
|
34 |
+
RUN \
|
35 |
+
if [[ "$TARGETPLATFORM" = "linux/amd64" ]]; then export ARCH_NAME="x86_64"; \
|
36 |
+
elif [[ "$TARGETPLATFORM" = "linux/arm64" ]]; then export ARCH_NAME="aarch64"; fi; \
|
37 |
+
mkdir /launcher-temp && \
|
38 |
+
cd /launcher-temp && \
|
39 |
+
wget https://github.com/n8n-io/task-runner-launcher/releases/download/${LAUNCHER_VERSION}/task-runner-launcher-$ARCH_NAME-unknown-linux-musl.zip && \
|
40 |
+
wget https://github.com/n8n-io/task-runner-launcher/releases/download/${LAUNCHER_VERSION}/task-runner-launcher-$ARCH_NAME-unknown-linux-musl.sha256 && \
|
41 |
+
sha256sum -c task-runner-launcher-$ARCH_NAME-unknown-linux-musl.sha256 && \
|
42 |
+
unzip -d $(dirname ${N8N_RUNNERS_LAUNCHER_PATH}) task-runner-launcher-$ARCH_NAME-unknown-linux-musl.zip task-runner-launcher && \
|
43 |
+
cd - && \
|
44 |
+
rm -r /launcher-temp && \
|
45 |
+
chmod 4555 ${N8N_RUNNERS_LAUNCHER_PATH} && \
|
46 |
+
addgroup -g 2000 task-runner && \
|
47 |
+
adduser -D -u 2000 -g "Task Runner User" -G task-runner task-runner
|
48 |
+
|
49 |
+
COPY docker-entrypoint.sh /
|
50 |
+
|
51 |
+
RUN \
|
52 |
+
mkdir .n8n && \
|
53 |
+
chown node:node .n8n
|
54 |
+
ENV SHELL /bin/sh
|
55 |
+
USER node
|
56 |
+
ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"]
|