From 1b18f8c5208c3a1c829826ebe2b6965f312251a4 Mon Sep 17 00:00:00 2001 From: deltreey Date: Tue, 3 Jun 2025 12:15:24 -0500 Subject: [PATCH] working docker and docker-in-docker images with pyenv and nvm --- node-dind-python3.12.Dockerfile | 79 +++++++++++++++++++++++++++++++ node-dind-python3.8.Dockerfile | 79 +++++++++++++++++++++++++++++++ node-dind-python3.9.Dockerfile | 79 +++++++++++++++++++++++++++++++ node-docker-python3.12.Dockerfile | 79 +++++++++++++++++++++++++++++++ node-docker-python3.8.Dockerfile | 79 +++++++++++++++++++++++++++++++ node-docker-python3.9.Dockerfile | 79 +++++++++++++++++++++++++++++++ 6 files changed, 474 insertions(+) create mode 100644 node-dind-python3.12.Dockerfile create mode 100644 node-dind-python3.8.Dockerfile create mode 100644 node-dind-python3.9.Dockerfile create mode 100644 node-docker-python3.12.Dockerfile create mode 100644 node-docker-python3.8.Dockerfile create mode 100644 node-docker-python3.9.Dockerfile diff --git a/node-dind-python3.12.Dockerfile b/node-dind-python3.12.Dockerfile new file mode 100644 index 0000000..ea162e2 --- /dev/null +++ b/node-dind-python3.12.Dockerfile @@ -0,0 +1,79 @@ +# Base image with Docker-in-Docker capability +FROM docker:28.1.1-dind + +# Metadata +LABEL maintainer="edward.coderman@mythicdevelopment.com" + +# Install core utilities +RUN apk add --no-cache \ + bash \ + curl \ + git \ + build-base \ + openssl \ + openssl-dev \ + libffi-dev \ + linux-headers \ + ncurses \ + ncurses-dev \ + readline \ + zlib-dev \ + bzip2-dev \ + xz-dev \ + sqlite-dev \ + wget \ + ca-certificates \ + sudo \ + coreutils \ + tini + + +# Install pyenv (optional, if you want flexible Python version management) +ENV PYENV_ROOT /root/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:/usr/bin/coreutils:${PYENV_ROOT}/bin:$PATH + +RUN curl https://pyenv.run | bash && \ + pyenv install 3.12 && \ + pyenv global 3.12 + +# Upgrade pip + install pyinstaller +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir pyinstaller + +# Install uv (https://github.com/astral-sh/uv) +RUN curl -Ls https://astral.sh/uv/install.sh | bash + +# Install node +# Use bash for the shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Environment for bash + NVM +ENV NVM_DIR /app/.nvm +ENV BASH_ENV /app/.bash_env + +# Setup shell sourcing +RUN mkdir -p "$NVM_DIR" && touch "$BASH_ENV" && \ + echo "export NVM_DIR=$NVM_DIR" >> "$BASH_ENV" && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> "$BASH_ENV" + +# Install NVM and desired Node version +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | PROFILE="$BASH_ENV" bash +RUN bash -c "source $BASH_ENV && nvm install 20 && nvm alias default 20 && nvm use default" + +RUN echo 'export PYENV_ROOT="/root/.pyenv"' >> $BASH_ENV && \ + echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> $BASH_ENV && \ + echo 'if [ -n "$PS1" ]; then' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init --path)"' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init -)"' >> "$BASH_ENV" && \ + echo 'fi' >> "$BASH_ENV" && \ + echo '. "${BASH_ENV}"' >> ~/.bashrc + +RUN bash -c "source $BASH_ENV && nvm use default && \ + ln -sf $(command -v node) /usr/local/bin/node && \ + ln -sf $(command -v npm) /usr/local/bin/npm && \ + ln -sf $(command -v npx) /usr/local/bin/npx && \ + ln -sf /root/.local/bin/uv /usr/local/bin/uv" + + +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["bash", "-l"] diff --git a/node-dind-python3.8.Dockerfile b/node-dind-python3.8.Dockerfile new file mode 100644 index 0000000..f2a928e --- /dev/null +++ b/node-dind-python3.8.Dockerfile @@ -0,0 +1,79 @@ +# Base image with Docker-in-Docker capability +FROM docker:28.1.1-dind + +# Metadata +LABEL maintainer="edward.coderman@mythicdevelopment.com" + +# Install core utilities +RUN apk add --no-cache \ + bash \ + curl \ + git \ + build-base \ + openssl \ + openssl-dev \ + libffi-dev \ + linux-headers \ + ncurses \ + ncurses-dev \ + readline \ + zlib-dev \ + bzip2-dev \ + xz-dev \ + sqlite-dev \ + wget \ + ca-certificates \ + sudo \ + coreutils \ + tini + + +# Install pyenv (optional, if you want flexible Python version management) +ENV PYENV_ROOT /root/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:/usr/bin/coreutils:${PYENV_ROOT}/bin:$PATH + +RUN curl https://pyenv.run | bash && \ + pyenv install 3.8 && \ + pyenv global 3.8 + +# Upgrade pip + install pyinstaller +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir pyinstaller + +# Install uv (https://github.com/astral-sh/uv) +RUN curl -Ls https://astral.sh/uv/install.sh | bash + +# Install node +# Use bash for the shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Environment for bash + NVM +ENV NVM_DIR /app/.nvm +ENV BASH_ENV /app/.bash_env + +# Setup shell sourcing +RUN mkdir -p "$NVM_DIR" && touch "$BASH_ENV" && \ + echo "export NVM_DIR=$NVM_DIR" >> "$BASH_ENV" && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> "$BASH_ENV" + +# Install NVM and desired Node version +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | PROFILE="$BASH_ENV" bash +RUN bash -c "source $BASH_ENV && nvm install 20 && nvm alias default 20 && nvm use default" + +RUN echo 'export PYENV_ROOT="/root/.pyenv"' >> $BASH_ENV && \ + echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> $BASH_ENV && \ + echo 'if [ -n "$PS1" ]; then' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init --path)"' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init -)"' >> "$BASH_ENV" && \ + echo 'fi' >> "$BASH_ENV" && \ + echo '. "${BASH_ENV}"' >> ~/.bashrc + +RUN bash -c "source $BASH_ENV && nvm use default && \ + ln -sf $(command -v node) /usr/local/bin/node && \ + ln -sf $(command -v npm) /usr/local/bin/npm && \ + ln -sf $(command -v npx) /usr/local/bin/npx && \ + ln -sf /root/.local/bin/uv /usr/local/bin/uv" + + +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["bash", "-l"] diff --git a/node-dind-python3.9.Dockerfile b/node-dind-python3.9.Dockerfile new file mode 100644 index 0000000..c7c2e5a --- /dev/null +++ b/node-dind-python3.9.Dockerfile @@ -0,0 +1,79 @@ +# Base image with Docker-in-Docker capability +FROM docker:28.1.1-dind + +# Metadata +LABEL maintainer="edward.coderman@mythicdevelopment.com" + +# Install core utilities +RUN apk add --no-cache \ + bash \ + curl \ + git \ + build-base \ + openssl \ + openssl-dev \ + libffi-dev \ + linux-headers \ + ncurses \ + ncurses-dev \ + readline \ + zlib-dev \ + bzip2-dev \ + xz-dev \ + sqlite-dev \ + wget \ + ca-certificates \ + sudo \ + coreutils \ + tini + + +# Install pyenv (optional, if you want flexible Python version management) +ENV PYENV_ROOT /root/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:/usr/bin/coreutils:${PYENV_ROOT}/bin:$PATH + +RUN curl https://pyenv.run | bash && \ + pyenv install 3.9 && \ + pyenv global 3.9 + +# Upgrade pip + install pyinstaller +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir pyinstaller + +# Install uv (https://github.com/astral-sh/uv) +RUN curl -Ls https://astral.sh/uv/install.sh | bash + +# Install node +# Use bash for the shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Environment for bash + NVM +ENV NVM_DIR /app/.nvm +ENV BASH_ENV /app/.bash_env + +# Setup shell sourcing +RUN mkdir -p "$NVM_DIR" && touch "$BASH_ENV" && \ + echo "export NVM_DIR=$NVM_DIR" >> "$BASH_ENV" && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> "$BASH_ENV" + +# Install NVM and desired Node version +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | PROFILE="$BASH_ENV" bash +RUN bash -c "source $BASH_ENV && nvm install 20 && nvm alias default 20 && nvm use default" + +RUN echo 'export PYENV_ROOT="/root/.pyenv"' >> $BASH_ENV && \ + echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> $BASH_ENV && \ + echo 'if [ -n "$PS1" ]; then' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init --path)"' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init -)"' >> "$BASH_ENV" && \ + echo 'fi' >> "$BASH_ENV" && \ + echo '. "${BASH_ENV}"' >> ~/.bashrc + +RUN bash -c "source $BASH_ENV && nvm use default && \ + ln -sf $(command -v node) /usr/local/bin/node && \ + ln -sf $(command -v npm) /usr/local/bin/npm && \ + ln -sf $(command -v npx) /usr/local/bin/npx && \ + ln -sf /root/.local/bin/uv /usr/local/bin/uv" + + +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["bash", "-l"] diff --git a/node-docker-python3.12.Dockerfile b/node-docker-python3.12.Dockerfile new file mode 100644 index 0000000..eb097b5 --- /dev/null +++ b/node-docker-python3.12.Dockerfile @@ -0,0 +1,79 @@ +# Base image with Docker-in-Docker capability +FROM docker:28.1.1-cli + +# Metadata +LABEL maintainer="edward.coderman@mythicdevelopment.com" + +# Install core utilities +RUN apk add --no-cache \ + bash \ + curl \ + git \ + build-base \ + openssl \ + openssl-dev \ + libffi-dev \ + linux-headers \ + ncurses \ + ncurses-dev \ + readline \ + zlib-dev \ + bzip2-dev \ + xz-dev \ + sqlite-dev \ + wget \ + ca-certificates \ + sudo \ + coreutils \ + tini + + +# Install pyenv (optional, if you want flexible Python version management) +ENV PYENV_ROOT /root/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:/usr/bin/coreutils:${PYENV_ROOT}/bin:$PATH + +RUN curl https://pyenv.run | bash && \ + pyenv install 3.12 && \ + pyenv global 3.12 + +# Upgrade pip + install pyinstaller +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir pyinstaller + +# Install uv (https://github.com/astral-sh/uv) +RUN curl -Ls https://astral.sh/uv/install.sh | bash + +# Install node +# Use bash for the shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Environment for bash + NVM +ENV NVM_DIR /app/.nvm +ENV BASH_ENV /app/.bash_env + +# Setup shell sourcing +RUN mkdir -p "$NVM_DIR" && touch "$BASH_ENV" && \ + echo "export NVM_DIR=$NVM_DIR" >> "$BASH_ENV" && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> "$BASH_ENV" + +# Install NVM and desired Node version +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | PROFILE="$BASH_ENV" bash +RUN bash -c "source $BASH_ENV && nvm install 20 && nvm alias default 20 && nvm use default" + +RUN echo 'export PYENV_ROOT="/root/.pyenv"' >> $BASH_ENV && \ + echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> $BASH_ENV && \ + echo 'if [ -n "$PS1" ]; then' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init --path)"' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init -)"' >> "$BASH_ENV" && \ + echo 'fi' >> "$BASH_ENV" && \ + echo '. "${BASH_ENV}"' >> ~/.bashrc + +RUN bash -c "source $BASH_ENV && nvm use default && \ + ln -sf $(command -v node) /usr/local/bin/node && \ + ln -sf $(command -v npm) /usr/local/bin/npm && \ + ln -sf $(command -v npx) /usr/local/bin/npx && \ + ln -sf /root/.local/bin/uv /usr/local/bin/uv" + + +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["bash", "-l"] diff --git a/node-docker-python3.8.Dockerfile b/node-docker-python3.8.Dockerfile new file mode 100644 index 0000000..3d6df9e --- /dev/null +++ b/node-docker-python3.8.Dockerfile @@ -0,0 +1,79 @@ +# Base image with Docker-in-Docker capability +FROM docker:28.1.1-cli + +# Metadata +LABEL maintainer="edward.coderman@mythicdevelopment.com" + +# Install core utilities +RUN apk add --no-cache \ + bash \ + curl \ + git \ + build-base \ + openssl \ + openssl-dev \ + libffi-dev \ + linux-headers \ + ncurses \ + ncurses-dev \ + readline \ + zlib-dev \ + bzip2-dev \ + xz-dev \ + sqlite-dev \ + wget \ + ca-certificates \ + sudo \ + coreutils \ + tini + + +# Install pyenv (optional, if you want flexible Python version management) +ENV PYENV_ROOT /root/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:/usr/bin/coreutils:${PYENV_ROOT}/bin:$PATH + +RUN curl https://pyenv.run | bash && \ + pyenv install 3.8 && \ + pyenv global 3.8 + +# Upgrade pip + install pyinstaller +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir pyinstaller + +# Install uv (https://github.com/astral-sh/uv) +RUN curl -Ls https://astral.sh/uv/install.sh | bash + +# Install node +# Use bash for the shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Environment for bash + NVM +ENV NVM_DIR /app/.nvm +ENV BASH_ENV /app/.bash_env + +# Setup shell sourcing +RUN mkdir -p "$NVM_DIR" && touch "$BASH_ENV" && \ + echo "export NVM_DIR=$NVM_DIR" >> "$BASH_ENV" && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> "$BASH_ENV" + +# Install NVM and desired Node version +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | PROFILE="$BASH_ENV" bash +RUN bash -c "source $BASH_ENV && nvm install 20 && nvm alias default 20 && nvm use default" + +RUN echo 'export PYENV_ROOT="/root/.pyenv"' >> $BASH_ENV && \ + echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> $BASH_ENV && \ + echo 'if [ -n "$PS1" ]; then' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init --path)"' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init -)"' >> "$BASH_ENV" && \ + echo 'fi' >> "$BASH_ENV" && \ + echo '. "${BASH_ENV}"' >> ~/.bashrc + +RUN bash -c "source $BASH_ENV && nvm use default && \ + ln -sf $(command -v node) /usr/local/bin/node && \ + ln -sf $(command -v npm) /usr/local/bin/npm && \ + ln -sf $(command -v npx) /usr/local/bin/npx && \ + ln -sf /root/.local/bin/uv /usr/local/bin/uv" + + +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["bash", "-l"] diff --git a/node-docker-python3.9.Dockerfile b/node-docker-python3.9.Dockerfile new file mode 100644 index 0000000..64159c7 --- /dev/null +++ b/node-docker-python3.9.Dockerfile @@ -0,0 +1,79 @@ +# Base image with Docker-in-Docker capability +FROM docker:28.1.1-cli + +# Metadata +LABEL maintainer="edward.coderman@mythicdevelopment.com" + +# Install core utilities +RUN apk add --no-cache \ + bash \ + curl \ + git \ + build-base \ + openssl \ + openssl-dev \ + libffi-dev \ + linux-headers \ + ncurses \ + ncurses-dev \ + readline \ + zlib-dev \ + bzip2-dev \ + xz-dev \ + sqlite-dev \ + wget \ + ca-certificates \ + sudo \ + coreutils \ + tini + + +# Install pyenv (optional, if you want flexible Python version management) +ENV PYENV_ROOT /root/.pyenv +ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:/usr/bin/coreutils:${PYENV_ROOT}/bin:$PATH + +RUN curl https://pyenv.run | bash && \ + pyenv install 3.9 && \ + pyenv global 3.9 + +# Upgrade pip + install pyinstaller +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir pyinstaller + +# Install uv (https://github.com/astral-sh/uv) +RUN curl -Ls https://astral.sh/uv/install.sh | bash + +# Install node +# Use bash for the shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Environment for bash + NVM +ENV NVM_DIR /app/.nvm +ENV BASH_ENV /app/.bash_env + +# Setup shell sourcing +RUN mkdir -p "$NVM_DIR" && touch "$BASH_ENV" && \ + echo "export NVM_DIR=$NVM_DIR" >> "$BASH_ENV" && \ + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> "$BASH_ENV" + +# Install NVM and desired Node version +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | PROFILE="$BASH_ENV" bash +RUN bash -c "source $BASH_ENV && nvm install 20 && nvm alias default 20 && nvm use default" + +RUN echo 'export PYENV_ROOT="/root/.pyenv"' >> $BASH_ENV && \ + echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> $BASH_ENV && \ + echo 'if [ -n "$PS1" ]; then' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init --path)"' >> "$BASH_ENV" && \ + echo ' eval "$(pyenv init -)"' >> "$BASH_ENV" && \ + echo 'fi' >> "$BASH_ENV" && \ + echo '. "${BASH_ENV}"' >> ~/.bashrc + +RUN bash -c "source $BASH_ENV && nvm use default && \ + ln -sf $(command -v node) /usr/local/bin/node && \ + ln -sf $(command -v npm) /usr/local/bin/npm && \ + ln -sf $(command -v npx) /usr/local/bin/npx && \ + ln -sf /root/.local/bin/uv /usr/local/bin/uv" + + +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["bash", "-l"]