feat(alpine-deno): Improve alpine deno image: switch to alpine:edge and use native Deno package, remove glibc workaround, update NVM/PATH, add local tooling settings and expanded README
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
FROM alpine:latest
|
||||
FROM alpine:edge
|
||||
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
||||
|
||||
WORKDIR /workspace
|
||||
@@ -6,11 +6,10 @@ WORKDIR /workspace
|
||||
# Important environment variables
|
||||
ENV NODE_VERSION_LTS="20.18.2" \
|
||||
NVM_DIR="/usr/local/nvm" \
|
||||
DENO_INSTALL="/root/.deno" \
|
||||
NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release"
|
||||
|
||||
# Install required packages for NVM and Node.js
|
||||
# Note: libgcc is required for Deno's glibc compatibility
|
||||
# Install Deno from Alpine community repository (native musl build)
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
curl \
|
||||
@@ -18,15 +17,7 @@ RUN apk add --no-cache \
|
||||
ca-certificates \
|
||||
unzip \
|
||||
libstdc++ \
|
||||
libgcc
|
||||
|
||||
# Install glibc for Deno compatibility (Deno only provides glibc builds, not musl)
|
||||
# Using sgerrand's glibc package for Alpine
|
||||
RUN curl -fsSL -o /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
|
||||
&& curl -fsSL -o glibc-2.35-r1.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r1/glibc-2.35-r1.apk \
|
||||
&& curl -fsSL -o glibc-bin-2.35-r1.apk https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r1/glibc-bin-2.35-r1.apk \
|
||||
&& apk add --no-cache --force-overwrite glibc-2.35-r1.apk glibc-bin-2.35-r1.apk \
|
||||
&& rm glibc-2.35-r1.apk glibc-bin-2.35-r1.apk
|
||||
deno
|
||||
|
||||
# Install NVM (latest version for better Alpine/musl support)
|
||||
RUN mkdir -p $NVM_DIR && curl https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
|
||||
@@ -50,13 +41,12 @@ SHELL ["/usr/local/bin/bash-with-nvm"]
|
||||
# Enable nvm for runtime bash commands (CI/CD workflows)
|
||||
ENV BASH_ENV=/etc/bash.bashrc
|
||||
|
||||
# Install Node.js LTS via NVM and Deno
|
||||
# Install Node.js LTS via NVM (Deno already installed from Alpine repos)
|
||||
RUN nvm install $NODE_VERSION_LTS \
|
||||
&& nvm alias default $NODE_VERSION_LTS \
|
||||
&& nvm use default \
|
||||
&& curl -fsSL https://deno.land/install.sh | sh
|
||||
&& nvm use default
|
||||
|
||||
ENV PATH="$DENO_INSTALL/bin:$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH"
|
||||
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH"
|
||||
ENV NODE_PATH=$NVM_DIR/v$NODE_VERSION_LTS/lib/node_modules
|
||||
|
||||
# Set entrypoint to make nvm available in all runtime contexts
|
||||
|
||||
Reference in New Issue
Block a user