@@ -5,7 +5,7 @@ FROM ubuntu:24.04
55ARG DEV_USER=savdert
66ARG DEV_UID=1000
77ARG DEV_GID=1000
8- ARG TZ=Europe/Istanbul
8+ ARG TZ=America/New_York
99
1010# Environment variables
1111ENV DEBIAN_FRONTEND=noninteractive \
@@ -34,34 +34,40 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
3434RUN locale-gen en_US.UTF-8 && \
3535 ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone
3636
37- # Create the user with sudo privileges
38- RUN groupadd -g ${DEV_GID} ${DEV_USER} && \
39- useradd -m -u ${DEV_UID} -g ${DEV_GID} -s /usr/bin/zsh ${DEV_USER} && \
37+ # Create the user with sudo privileges - Handle case where UID/GID 1000 already exists
38+ RUN if getent passwd ${DEV_UID} > /dev/null; then \
39+ EXISTING_USER=$(getent passwd ${DEV_UID} | cut -d: -f1); \
40+ usermod -l ${DEV_USER} -d /home/${DEV_USER} -m ${EXISTING_USER}; \
41+ groupmod -n ${DEV_USER} $(getent group ${DEV_GID} | cut -d: -f1); \
42+ else \
43+ groupadd -g ${DEV_GID} ${DEV_USER} && \
44+ useradd -m -u ${DEV_UID} -g ${DEV_GID} -s /usr/bin/zsh ${DEV_USER}; \
45+ fi && \
4046 echo "${DEV_USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
4147
42- # Install mise globally
43- RUN curl https://mise.run | sh && \
44- mv /root/.local/bin/mise /usr/local/bin/mise
45-
4648# Setup project directory
4749WORKDIR /workspace
4850COPY . /workspace
49- RUN chown -R ${DEV_USER}:${DEV_USER} /workspace /home/${DEV_USER}
51+ RUN chown -R ${DEV_USER}:${DEV_USER} /workspace
5052
5153USER ${DEV_USER}
5254
55+ # Install mise for the local user
56+ RUN curl https://mise.run | sh
57+
5358# Install tools via mise during the build (caching tools in the image)
5459RUN mise trust --quiet && \
5560 mise install --yes
5661
5762# Symlink configurations to the user's home directory
58- RUN mkdir -p ${HOME}/.config/zellij ${HOME}/.config/nvim && \
63+ RUN mkdir -p ${HOME}/.config/zellij ${HOME}/.config/nvim ${HOME}/.config/mise && \
5964 ln -sf /workspace/configs/.zshrc ${HOME}/.zshrc && \
6065 ln -sf /workspace/configs/starship.toml ${HOME}/.config/starship.toml && \
61- ln -sf /workspace/configs/zellij/config.kdl ${HOME}/.config/zellij/config.kdl
66+ ln -sf /workspace/configs/zellij/config.kdl ${HOME}/.config/zellij/config.kdl && \
67+ ln -sf /workspace/mise.toml ${HOME}/.config/mise/config.toml
6268
6369# Expose the ttyd port
6470EXPOSE 7681
6571
66- # Command to launch ttyd with zsh
67- ENTRYPOINT ["ttyd" , "-W" , "-p" , "7681" , "/usr/bin/zsh" ]
72+ # Command to launch ttyd with zsh (as login shell)
73+ ENTRYPOINT ["ttyd" , "-W" , "-p" , "7681" , "/usr/bin/zsh" , "-l" ]
0 commit comments