From ea739e5509a5b8c930edd3ff7cffc7b3d44758ba Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Sat, 14 Sep 2024 18:26:24 +0200 Subject: [PATCH] manual ln --- base-debian/Dockerfile | 20 ++++++++++-- web-stack/Dockerfile | 67 ++++++++++++++++++-------------------- web-stack/README.md | 1 - web-stack/create-zshenv.sh | 33 +++++++++++++++++++ 4 files changed, 82 insertions(+), 39 deletions(-) create mode 100644 web-stack/create-zshenv.sh diff --git a/base-debian/Dockerfile b/base-debian/Dockerfile index 5435d57..819b47f 100644 --- a/base-debian/Dockerfile +++ b/base-debian/Dockerfile @@ -8,17 +8,31 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ vim \ tmux \ curl \ + unzip \ git \ + python3 \ + build-essential \ + libssl-dev \ + sudo \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -RUN useradd --system --create-home --shell=/bin/zsh --groups=sudo dev -RUN mkdir /workspace && chown -R dev:dev /workspace -USER dev +ARG USERNAME=dev +ARG USER_UID=1000 +ARG USER_GID=$USER_UID + +RUN groupadd --gid $USER_GID $USERNAME \ + && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ + && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ + && chmod 0440 /etc/sudoers.d/$USERNAME + +RUN mkdir /workspace && chown -R $USERNAME:$USERNAME /workspace +USER $USERNAME RUN git clone https://gitea.tomastm.com/tomas.mirchev/dotfiles.git ~/.dotfiles RUN ~/.dotfiles/install.sh +SHELL ["/bin/zsh", "-c"] WORKDIR /workspace ENV w=/workspace diff --git a/web-stack/Dockerfile b/web-stack/Dockerfile index a89c084..73b93b8 100644 --- a/web-stack/Dockerfile +++ b/web-stack/Dockerfile @@ -1,41 +1,38 @@ -FROM debian:bookworm +ARG VARIANT="bookworm" +FROM debian:${VARIANT} RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ - && apt-get install -y --no-install-recommends \ - zsh \ - vim \ - tmux \ - curl \ - git \ - && apt-get clean \ + && apt-get -y install --no-install-recommends \ + ca-certificates \ + zsh \ + vim \ + tmux \ + curl \ + unzip \ + git \ + python3 \ + build-essential \ + libssl-dev \ + openssh-client \ + sudo \ + && apt-get autoremove -y \ + && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* -RUN useradd -ms /bin/zsh dev +RUN groupadd -g 1001 dev +RUN useradd -u 1001 -g 1001 -m -s /bin/zsh dev +RUN echo "dev ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + +RUN mkdir /workspace +WORKDIR /workspace +VOLUME ["/workspace"] + +ENV w=/workspace +RUN chown -R dev:dev /workspace + +COPY create-zshenv.sh /usr/local/bin/create-zshenv.sh +RUN chmod +x /usr/local/bin/create-zshenv.sh +RUN /usr/local/bin/create-zshenv.sh + USER dev - -RUN mkdir /home/dev/.nvm -ENV NVM_DIR="/home/dev/.nvm" -RUN curl https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash \ - && . $NVM_DIR/nvm.sh \ - && nvm install 18 \ - && nvm install 20 \ - && nvm install 22 \ - && nvm install --lts \ - && nvm aliast default lts/* \ - && nvm use default - -RUN corepack enable npm -RUN corepack enable yarn -RUN corepack enable pnpm - -RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended - -ADD --chown=dev:dev tmp /home/dev - -ENV PATH="/home/dev/bin:$PATH" - -SHELL ["/bin/zsh", "-c"] - -WORKDIR /usr/src/app - CMD ["zsh"] diff --git a/web-stack/README.md b/web-stack/README.md index fa04e03..e66317c 100644 --- a/web-stack/README.md +++ b/web-stack/README.md @@ -1,4 +1,3 @@ docker build -t my-dev-container . - docker run -it --rm -v ~/apps/gateway:/usr/src/app -w /usr/src/app my-dev-container diff --git a/web-stack/create-zshenv.sh b/web-stack/create-zshenv.sh new file mode 100644 index 0000000..30bf17a --- /dev/null +++ b/web-stack/create-zshenv.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# Create the file as root +cat << 'EOF' > /home/dev/.zshenv +# ~/.zshenv +export HOME="/home/dev" +export XDG_CONFIG_HOME="$HOME/.config" +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" +export TMUX_CONFIG_HOME="$XDG_CONFIG_HOME/tmux" +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +EOF + +# Change ownership to dev user +chown dev:dev /home/dev/.zshenv + +su - dev -c /bin/bash << 'EOF' + export NVM_DIR="$HOME/.nvm" + mkdir -p "$NVM_DIR" + + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash + . "$NVM_DIR/nvm.sh" + + nvm install --lts + nvm install 18 + nvm install 20 + nvm install 22 + + corepack prepare npm --activate + corepack prepare yarn --activate + corepack prepare pnpm --activate + corepack disable +EOF