Spaces:
Runtime error
Runtime error
| FROM nvidia/cuda:12.4.1-devel-ubuntu22.04 | |
| ENV LANG C.UTF-8 | |
| ENV TZ Asia/Tokyo | |
| # ============ | |
| # System packages | |
| # ============ | |
| # Collect packages | |
| RUN apt update \ | |
| && DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends sudo wget curl ssh git zip locales ed less neovim ca-certificates jq python3 python3-pip python3-venv build-essential python3-poetry pipx libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev | |
| # ============ | |
| # User settings | |
| # ============ | |
| ARG USER_NAME=vscode | |
| ARG UID=1000 | |
| ARG GROUP_NAME=vscode | |
| ARG GID=1000 | |
| ARG GID_WHEEL=999 | |
| ARG USER_SHELL=/bin/bash | |
| ARG HOME="/home/${USER_NAME}" | |
| ARG LOCAL_BIN="${HOME}/.local/bin" | |
| ENV XDG_CONFIG_HOME="${HOME}/.config" | |
| ENV XDG_CACHE_HOME="${HOME}/.cache" | |
| ENV XDG_DATA_HOME="${HOME}/.local/share" | |
| ENV XDG_STATE_HOME="${HOME}/.local/state" | |
| ENV PATH="${LOCAL_BIN}:${PATH}" | |
| RUN : \ | |
| && groupadd --gid ${GID_WHEEL} wheel \ | |
| && echo %wheel ALL=\(ALL\) NOPASSWD:ALL >> /etc/sudoers \ | |
| && if getent group ${GID} >/dev/null 2>&1; then \ | |
| groupmod -n ${GROUP_NAME} $(getent group ${GID} | cut -d: -f1) \ | |
| ; \ | |
| else \ | |
| groupadd --gid ${GID} ${GROUP_NAME} \ | |
| ; \ | |
| fi \ | |
| && if id -u ${UID} >/dev/null 2>&1; then \ | |
| usermod \ | |
| -l ${USER_NAME} \ | |
| -d ${HOME} \ | |
| -g ${GROUP_NAME} \ | |
| -aG wheel \ | |
| $(id -nu ${UID}) \ | |
| && chsh -s ${USER_SHELL} ${USER_NAME} \ | |
| && mkdir ${HOME} \ | |
| && chown -R ${USER_NAME}:${GROUP_NAME} ${HOME} \ | |
| ; \ | |
| else \ | |
| useradd --create-home \ | |
| --uid ${UID} \ | |
| --shell ${USER_SHELL} \ | |
| -g ${GROUP_NAME} \ | |
| -G wheel \ | |
| ${USER_NAME}\ | |
| ; \ | |
| fi | |
| # ============ | |
| # Packages | |
| # ============ | |
| # ------------ | |
| # Initialization | |
| # ------------ | |
| # do not switch shell; keep using bash | |
| # switch user | |
| USER ${USER_NAME} | |
| # ensure directories | |
| RUN mkdir -p \ | |
| ${XDG_CONFIG_HOME} \ | |
| ${XDG_CACHE_HOME} \ | |
| ${XDG_DATA_HOME} \ | |
| ${XDG_STATE_HOME} \ | |
| ${LOCAL_BIN} \ | |
| ${HOME} | |
| # ------------ | |
| # Shell settings | |
| # ------------ | |
| # RUN echo "\ | |
| # export \\\ | |
| # XDG_CONFIG_HOME=\${HOME}/.config \\\ | |
| # XDG_CACHE_HOME=\${HOME}/.cache \\\ | |
| # XDG_DATA_HOME=\${HOME}/.local/share \\\ | |
| # XDG_STATE_HOME=\${HOME}/.local/state \\\ | |
| # ZDOTDIR=\${XDG_CONFIG_HOME}/zsh" >> /etc/zsh/zshenv | |
| # ------------ | |
| # pyenv | |
| # ------------ | |
| ENV DIR_PYENV=${XDG_DATA_HOME}/pyenv | |
| RUN git clone https://github.com/pyenv/pyenv ${DIR_PYENV} \ | |
| && cd ${DIR_PYENV} \ | |
| && src/configure \ | |
| && make -C src \ | |
| && ln -s ${DIR_PYENV}/libexec/pyenv ${LOCAL_BIN}/pyenv | |
| ENV PATH=${DIR_PYENV}/bin:${PATH} | |
| RUN echo 'eval "$(pyenv init -)"' >> ${HOME}/.bashrc | |
| RUN eval "$(pyenv init -)" \ | |
| && pyenv install 3.11 | |
| # ============ | |
| # Entrypoint | |
| # ============ | |
| CMD ["/bin/bash"] | |