Skip to content

Commit 3eeb2c4

Browse files
committed
feat(typescript-node): updates image configs
1 parent 575d0fb commit 3eeb2c4

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

.devcontainer/devcontainer.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
{
22
"name": "[dev] devcontainer-images",
3-
"image": "ghcr.io/6thpath/typescript-node",
3+
// "image": "ghcr.io/6thpath/typescript-node",
4+
"build": {
5+
"dockerfile": "../source/typescript-node/Dockerfile",
6+
"context": ".."
7+
},
48
"remoteUser": "nonroot",
59
"runArgs": [
610
"--security-opt=no-new-privileges", // ? prevent privilege escalation

source/typescript-node/Dockerfile

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,37 @@ RUN apt-get update && apt-get install -y \
1616
RUN 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
2420
ARG GROUP_NAME=dev
2521
ARG 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
3840
RUN 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
4350
RUN usermod -s /bin/zsh ${USER_NAME}
4451

4552
# switch to remote user

0 commit comments

Comments
 (0)