working docker and docker-in-docker images with pyenv and nvm
This commit is contained in:
79
node-dind-python3.12.Dockerfile
Normal file
79
node-dind-python3.12.Dockerfile
Normal file
@@ -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"]
|
||||
Reference in New Issue
Block a user