@@ -16,30 +16,37 @@ RUN apt-get update && apt-get install -y \
1616RUN corepack enable \
1717 && corepack prepare pnpm@latest --activate
1818
19- # setup for pnpm
20- ENV PNPM_HOME="/pnpm"
21- ENV PATH="${PNPM_HOME}:${PATH}"
22-
2319# variables for image configurations
2420ARG GROUP_NAME=dev
2521ARG USER_NAME=nonroot
22+ ARG USER_UID=1111
23+ ARG USER_GID=1111
2624
2725# creates non-root user for security
28- RUN groupadd ${GROUP_NAME} \
29- && useradd -m -s /bin/bash -g ${GROUP_NAME} ${USER_NAME} \
30- && mkdir -p ${PNPM_HOME}/store \
31- && chown -R ${USER_NAME}:${GROUP_NAME} ${PNPM_HOME} /workspaces \
32- && chmod -R 775 ${PNPM_HOME}
26+ RUN groupadd -g ${USER_GID} ${GROUP_NAME} \
27+ && useradd -m -u ${USER_UID} -g ${GROUP_NAME} -s /bin/bash ${USER_NAME}
28+
29+ # pnpm setup
30+ ENV PNPM_HOME="/pnpm"
31+ ENV PNPM_STORE_DIR="/pnpm/store"
32+ ENV PATH="${PNPM_HOME}:${PATH}"
3333
3434# configure pnpm store directory and settings
35- RUN pnpm config set store-dir ${PNPM_HOME}/store
35+ RUN mkdir -p /home/${USER_NAME}/.config/pnpm \
36+ && echo "store-dir=${PNPM_STORE_DIR}" > /home/${USER_NAME}/.config/pnpm/rc \
37+ && chmod 644 /home/${USER_NAME}/.config/pnpm/rc
3638
3739# install global development tools
3840RUN pnpm add -g \
3941 eslint \
4042 prettier \
4143 typescript
4244
45+ # adjust permissions for pnpm directories
46+ RUN chown -R ${USER_NAME}:${GROUP_NAME} ${PNPM_HOME} \
47+ && chmod -R 775 ${PNPM_HOME}
48+
49+ # change default shell to zsh for remote user
4350RUN usermod -s /bin/zsh ${USER_NAME}
4451
4552# switch to remote user
0 commit comments