71 lines
2.4 KiB
Docker
71 lines
2.4 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
# --- Setup for NVM and other tools ---
|
|
|
|
# Update package lists and install basic dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
git \
|
|
nodejs \
|
|
npm \
|
|
build-essential \
|
|
zsh \
|
|
tmux \
|
|
wget \
|
|
unzip \
|
|
iputils-ping \
|
|
sudo \
|
|
procps \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install NVM
|
|
# Using a specific NVM version is good practice. Check the latest stable version.
|
|
ENV NVM_DIR="/usr/local/nvm"
|
|
RUN mkdir -p ${NVM_DIR} && \
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && \
|
|
# Ensure NVM paths are added to shell profiles for all users
|
|
echo 'export NVM_DIR="/usr/local/nvm"' >> /etc/profile.d/nvm.sh && \
|
|
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >> /etc/profile.d/nvm.sh && \
|
|
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> /etc/profile.d/nvm.sh && \
|
|
chmod +x /etc/profile.d/nvm.sh
|
|
|
|
# Install some default Node.js version and global packages with NVM
|
|
# This will be available to all users.
|
|
# You might want to install `npm` itself, or specific global packages.
|
|
# Ensure NVM is sourced before using it.
|
|
RUN bashenv="$(mktemp)" && \
|
|
echo '#!/bin/bash' > "$bashenv" && \
|
|
echo '. /etc/profile.d/nvm.sh' >> "$bashenv" && \
|
|
echo 'nvm install 20' >> "$bashenv" && \
|
|
echo 'nvm use 20' >> "$bashenv" && \
|
|
echo 'npm install -g pnpm yarn' >> "$bashenv" && \
|
|
chmod +x "$bashenv" && \
|
|
"$bashenv" && \
|
|
rm "$bashenv"
|
|
|
|
|
|
# --- Setup a non-root user (important for Coder) ---
|
|
# Coder typically runs the workspace user as `coder`.
|
|
# We'll create a `coder` user and give it sudo privileges without password.
|
|
# This aligns with how Coder manages workspace users.
|
|
ARG USERNAME=coder
|
|
ARG USER_UID=1000
|
|
ARG USER_GID=$USER_UID
|
|
|
|
RUN groupadd --gid $USER_GID $USERNAME \
|
|
&& useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
|
|
&& apt-get update && apt-get install -y sudo \
|
|
&& echo $USERNAME ALL=\(ALL\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
|
|
&& chmod 0440 /etc/sudoers.d/$USERNAME
|
|
|
|
# Ensure the /home/$USERNAME directory exists and has correct permissions
|
|
RUN mkdir -p /home/$USERNAME && chown $USERNAME:$USERNAME /home/$USERNAME
|
|
|
|
USER $USERNAME
|
|
RUN git clone https://gitea.olsen.cloud/morten/nvim.git
|
|
|
|
COPY .gitconfig_template /home/$USERNAME/.gitconfig
|
|
RUN chown $USERNAME:$USERNAME /home/$USERNAME/.gitconfig
|
|
|
|
RUN sudo chsh -s /usr/bin/zsh $USERNAME
|