aslemen's picture
package: init
0460cdb
Raw
History Blame Contribute Delete
2.96 kB
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"]