J2897 icon

Building an n8n custom Docker image

J2897 | PRO | 09/13/24 12:38:33 AM UTC | 0 ⭐ | 580 šŸ‘ļø | Never ā° | []
Markdown |

3.42 KB

|

None

|

0 šŸ‘

/

0 šŸ‘Ž


Create a Directory for Your Docker Setup
Create a new directory on your local machine to store the Dockerfile and build script.
mkdir custom-n8n
cd custom-n8n


Create the Dockerfile
Inside the custom-n8n directory, create a file named Dockerfile:
touch Dockerfile
Then, open it in a text editor (e.g., nano, vim, or any code editor) and paste the contents of the Dockerfile provided earlier:
Dockerfile:
# Start from the latest n8n image
FROM n8nio/n8n:latest

# Install dependencies required for Pyenv and Python builds
USER root
RUN apk add --no-cache bash curl git make gcc g++ zlib-dev bzip2-dev readline-dev sqlite-dev openssl-dev tk-dev libffi-dev linux-headers xz-dev

# Set environment variables for Pyenv
ENV PYENV_ROOT="/root/.pyenv"
ENV PATH="$PYENV_ROOT/bin:$PATH"

# Install Pyenv
RUN curl https://pyenv.run | bash

# Set up Pyenv in the shell environment
RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> /root/.bashrc && \
   echo 'eval "$(pyenv init --path)"' >> /root/.bashrc && \
   echo 'eval "$(pyenv init -)"' >> /root/.bashrc && \
   echo 'eval "$(pyenv virtualenv-init -)"' >> /root/.bashrc

# Install multiple Python versions
RUN bash -c "source /root/.bashrc && \
   pyenv install 3.9.19 && \
   pyenv install 3.10.14 && \
   pyenv install 3.11.9 && \
   pyenv install 3.12.6 && \
   pyenv global 3.12.6"

# Set the user back to 'node' (default user for n8n)
USER node


Create the Build Script
Still in the custom-n8n directory, create a file named build_n8n_custom.sh:
touch build_n8n_custom.sh
Open it in a text editor and paste the following script:
build_n8n_custom.sh:
#!/bin/bash

# Define the image name and tag
IMAGE_NAME="custom-n8n"
IMAGE_TAG="latest"

# Build the custom Docker image
echo "Building the custom n8n image..."
docker build -t $IMAGE_NAME:$IMAGE_TAG .

# Display success message
if [ $? -eq 0 ]; then
   echo "Custom n8n image built successfully: $IMAGE_NAME:$IMAGE_TAG"
else
   echo "Failed to build the custom n8n image."
   exit 1
fi
Make the script executable by running:
chmod +x build_n8n_custom.sh


Build the Custom Docker Image
Run the build_n8n_custom.sh script to build your custom n8n image with the desired Python versions:
./build_n8n_custom.sh
This will create a Docker image named custom-n8n:latest based on the Dockerfile you created.


Run Your Custom n8n Image
After building the image, you can start your custom n8n instance using the following command:
docker run -d --rm \
   --name n8n \
   -p 5678:5678 \
   -e GENERIC_TIMEZONE="Europe/London" \
   -e TZ="Europe/London" \
   -v n8n_data:/home/node/.n8n \
   -v /home/J2897/Projects:/home/node/Projects \
   custom-n8n:latest

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    šŸ‘

    /

    šŸ‘Ž