# Start from the latest n8n image
FROM n8nio/n8n:latest
# Install dependencies required for Pyenv, Python builds, FFmpeg, and nano
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 ffmpeg nano
# Set environment variables for Pyenv
ENV PYENV_ROOT="/home/node/.pyenv"
ENV PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
# Install Pyenv for the 'node' user
USER node
RUN curl https://pyenv.run | bash
# Set up Pyenv in the shell environment for the 'node' user
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> /home/node/.bashrc && \
echo 'export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"' >> /home/node/.bashrc && \
echo 'eval "$(pyenv init --path)"' >> /home/node/.bashrc && \
echo 'eval "$(pyenv init -)"' >> /home/node/.bashrc && \
echo 'eval "$(pyenv virtualenv-init -)"' >> /home/node/.bashrc
# Install multiple Python versions as the 'node' user
RUN bash -c "source /home/node/.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"
# Create a note with details about the installed tools and build date
RUN echo '### Custom n8n Docker Image Information ###' > /home/node/BUILD_INFO.txt && \
echo "Built on: $(date)" >> /home/node/BUILD_INFO.txt && \
echo "Installed Python versions: 3.9.19, 3.10.14, 3.11.9, 3.12.6 (default: 3.12.6)" >> /home/node/BUILD_INFO.txt && \
echo "FFmpeg installed" >> /home/node/BUILD_INFO.txt && \
echo "Pyenv installed at $PYENV_ROOT" >> /home/node/BUILD_INFO.txt && \
echo "Nano installed" >> /home/node/BUILD_INFO.txt && \
chown node:node /home/node/BUILD_INFO.txt
# Set the user back to 'node' (default user for n8n)
USER node
Comments
0 B
|👍
/👎