🐳 Add Dockerfile to create image with local code

This commit is contained in:
Jan Oberhauser 2020-05-15 09:31:55 +02:00
parent 193e8b26b9
commit 24081d697b
3 changed files with 72 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# 1. Create an image to build n8n
FROM node:12.16-alpine as builder
# Update everything and install needed dependencies
USER root
# Install all needed dependencies
RUN apk --update add --virtual build-dependencies python build-base ca-certificates && \
npm_config_user=root npm install -g lerna
WORKDIR /data
COPY lerna.json .
COPY package.json .
COPY packages/cli/ ./packages/cli/
COPY packages/core/ ./packages/core/
COPY packages/editor-ui/ ./packages/editor-ui/
COPY packages/nodes-base/ ./packages/nodes-base/
COPY packages/workflow/ ./packages/workflow/
RUN rm -rf node_modules packages/*/node_modules packages/*/dist
RUN npm install --production --loglevel notice
RUN lerna bootstrap --hoist -- --production
RUN npm run build
# 2. Start with a new clean image with just the code that is needed to run n8n
FROM node:12.16-alpine
USER root
RUN apk add --update graphicsmagick tzdata tini su-exec
WORKDIR /data
# Install all needed dependencies
RUN npm_config_user=root npm install -g full-icu
ENV NODE_ICU_DATA /usr/local/lib/node_modules/full-icu
COPY --from=builder /data ./
COPY docker/images/n8n-custom/docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"]

View file

@ -0,0 +1,12 @@
# n8n - Custom Image
Dockerfile which allows to package up the local n8n code into
a docker image.
## Usage
Execute the following in the n8n root folder:
```bash
docker build -t n8n-custom -f docker/images/n8n-custom/Dockerfile .
```

View file

@ -0,0 +1,16 @@
#!/bin/sh
if [ -d /root/.n8n ] ; then
chmod o+rx /root
chown -R node /root/.n8n
ln -s /root/.n8n /home/node/
fi
if [ "$#" -gt 0 ]; then
# Got started with arguments
shift
exec su-exec node ./packages/cli/bin/n8n "$@"
else
# Got started without arguments
exec su-exec node ./packages/cli/bin/n8n
fi