| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # Based of https://github.com/devcontainers/images/blob/main/src/javascript-node/.devcontainer/Dockerfile
- ARG VARIANT=24-bookworm
- FROM node:${VARIANT}
- ARG USERNAME=node
- ARG NPM_GLOBAL=/usr/local/share/npm-global
- ENV DEBIAN_FRONTEND=noninteractive
- # Add NPM global to PATH.
- ENV PATH=${NPM_GLOBAL}/bin:${PATH}
- RUN \
- # Configure global npm install location, use group to adapt to UID/GID changes
- if ! cat /etc/group | grep -e "^npm:" > /dev/null 2>&1; then groupadd -r npm; fi \
- && usermod -a -G npm ${USERNAME} \
- && umask 0002 \
- && mkdir -p ${NPM_GLOBAL} \
- && touch /usr/local/etc/npmrc \
- && chown ${USERNAME}:npm ${NPM_GLOBAL} /usr/local/etc/npmrc \
- && chmod g+s ${NPM_GLOBAL} \
- && npm config -g set prefix ${NPM_GLOBAL} \
- && su ${USERNAME} -c "npm config -g set prefix ${NPM_GLOBAL}" \
- # Install eslint
- && su ${USERNAME} -c "umask 0002 && npm install -g eslint" \
- && npm cache clean --force > /dev/null 2>&1
- # Enable PNPM
- ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
- RUN corepack enable \
- && corepack prepare pnpm@latest --activate
- EXPOSE 3000
- # Install the packages we need
- RUN apt-get update && apt-get install -qy \
- bash \
- build-essential \
- curl \
- jq \
- less \
- git \
- gnupg2 \
- nano \
- netcat-openbsd \
- pandoc \
- unzip \
- wget
- # avoid million NPM install messages
- ENV npm_config_loglevel=warn
- # allow installing when the main user is root
- ENV npm_config_unsafe_perm=true
- # disable NPM funding messages
- ENV npm_config_fund=false
- # Colorize the bash shell
- RUN sed -i 's/#force_color_prompt=/force_color_prompt=/' /root/.bashrc
- # Copy wait-for utility
- COPY wait-for.sh /usr/local/bin/wait-for
- RUN chmod +rx /usr/local/bin/wait-for
- # Copy the startup file
- COPY app-init.sh /docker-init.sh
- RUN sed -i 's/\r$//' /docker-init.sh && \
- chmod +x /docker-init.sh
- # Create workspace
- RUN mkdir -p /workspace
- WORKDIR /workspace
- ENV NODE_ENV=development
|