docker buildx build -t n8n-puppeteer --build-arg N8N_VERSION=0.186.0 .
docker run -it --rm --name n8n -p 5678:5678 --cap-add=SYS_ADMIN n8n-puppeteer
#!/bin/sh | |
if [ -d /root/.n8n ] ; then | |
chmod o+rx /root | |
chown -R node /root/.n8n | |
ln -s /root/.n8n /home/node/ | |
fi | |
chown -R node /home/node | |
if [ "$#" -gt 0 ]; then | |
# Got started with arguments | |
exec su-exec node "$@" | |
else | |
# Got started without arguments | |
exec su-exec node n8n | |
fi |
FROM node:16-alpine | |
ARG N8N_VERSION | |
RUN if [ -z "$N8N_VERSION" ] ; then echo "The N8N_VERSION argument is missing!" ; exit 1; fi | |
# Update everything and install needed dependencies | |
RUN apk add --update graphicsmagick tzdata git tini su-exec | |
# # Set a custom user to not have n8n run as root | |
USER root | |
# Install n8n and the also temporary all the packages | |
# it needs to build it correctly. | |
RUN apk --update add --virtual build-dependencies python3 build-base ca-certificates && \ | |
npm config set python "$(which python3)" && \ | |
npm_config_user=root npm install -g full-icu n8n@${N8N_VERSION} && \ | |
apk del build-dependencies \ | |
&& rm -rf /root /tmp/* /var/cache/apk/* && mkdir /root; | |
# Install fonts | |
RUN apk --no-cache add --virtual fonts msttcorefonts-installer fontconfig && \ | |
update-ms-fonts && \ | |
fc-cache -f && \ | |
apk del fonts && \ | |
find /usr/share/fonts/truetype/msttcorefonts/ -type l -exec unlink {} \; \ | |
&& rm -rf /root /tmp/* /var/cache/apk/* && mkdir /root | |
ENV NODE_ICU_DATA /usr/local/lib/node_modules/full-icu | |
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true | |
RUN apk update && apk add --no-cache nmap && \ | |
echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \ | |
echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \ | |
apk update && \ | |
apk add --no-cache \ | |
chromium \ | |
harfbuzz \ | |
"freetype>2.8" \ | |
ttf-freefont \ | |
nss | |
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-puppeteer | |
WORKDIR /data | |
COPY docker-entrypoint.sh /docker-entrypoint.sh | |
ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"] | |
EXPOSE 5678/tcp |