114 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Stage 1: Build Stage
 | |
| FROM docker:dind as build-stage
 | |
| 
 | |
| # Install necessary build tools and dependencies
 | |
| RUN apk update && apk add --no-cache \
 | |
|   git \
 | |
|   openssl \
 | |
|   openssl-dev \
 | |
|   ca-certificates \
 | |
|   bash \
 | |
|   curl \
 | |
|   make \
 | |
|   gcc \
 | |
|   g++ \
 | |
|   python3 \
 | |
|   python3-dev \
 | |
|   py3-pip \
 | |
|   linux-headers \
 | |
|   paxctl \
 | |
|   libgcc \
 | |
|   libstdc++ \
 | |
|   gnupg \
 | |
|   nodejs-current \
 | |
|   npm \
 | |
|   krb5-libs \
 | |
|   rust \
 | |
|   docker-cli \
 | |
|   libffi-dev \
 | |
|   libc-dev \
 | |
|   docker-compose \
 | |
|   libc6-compat \
 | |
|   alpine-sdk \
 | |
|   && update-ca-certificates
 | |
| 
 | |
| # Ensure Python is correctly installed and upgrade pip
 | |
| ENV PYTHONUNBUFFERED=1
 | |
| RUN ln -sf python3 /usr/bin/python && \
 | |
|   apk add --no-cache py3-pip py3-setuptools
 | |
| 
 | |
| # Add the patch fix
 | |
| COPY ./stack-fix.c /lib/
 | |
| 
 | |
| # Install pnpm
 | |
| ENV PNPM_HOME="/root/.local/share/pnpm"
 | |
| RUN mkdir -p ${PNPM_HOME}
 | |
| ENV PATH="$PNPM_HOME:$PATH"
 | |
| RUN curl -fsSL "https://github.com/pnpm/pnpm/releases/latest/download/pnpm-linuxstatic-x64" -o /bin/pnpm && chmod +x /bin/pnpm
 | |
| 
 | |
| # Prepare the libraries packages
 | |
| RUN set -ex \
 | |
|     && apk add --no-cache --virtual .build-deps build-base \
 | |
|     && gcc -shared -fPIC /lib/stack-fix.c -o /lib/stack-fix.so \
 | |
|     && apk del .build-deps
 | |
| 
 | |
| # Export the environment variable of LD_PRELOAD
 | |
| ENV LD_PRELOAD /lib/stack-fix.so
 | |
| 
 | |
| # Validate installations
 | |
| RUN node -v && npm -v && pnpm -v
 | |
| RUN pnpm config set unsafe-perm true
 | |
| 
 | |
| # Stage 2: Final Stage
 | |
| FROM docker:dind
 | |
| 
 | |
| # Copy necessary files from build-stage
 | |
| COPY --from=build-stage /usr/bin/python3 /usr/bin/python3
 | |
| COPY --from=build-stage /usr/lib/python3.*/ /usr/lib/python3.*/
 | |
| COPY --from=build-stage /usr/bin/pip3 /usr/bin/pip3
 | |
| COPY --from=build-stage /lib/stack-fix.so /lib/stack-fix.so
 | |
| COPY --from=build-stage /bin/pnpm /bin/pnpm
 | |
| COPY --from=build-stage ${PNPM_HOME} ${PNPM_HOME}
 | |
| 
 | |
| # Ensure CA certificates are up-to-date
 | |
| RUN apk update && apk add --no-cache \
 | |
|   git \
 | |
|   openssl \
 | |
|   openssl-dev \
 | |
|   ca-certificates \
 | |
|   bash \
 | |
|   curl \
 | |
|   make \
 | |
|   gcc \
 | |
|   g++ \
 | |
|   python3 \
 | |
|   python3-dev \
 | |
|   py3-pip \
 | |
|   linux-headers \
 | |
|   paxctl \
 | |
|   libgcc \
 | |
|   libstdc++ \
 | |
|   gnupg \
 | |
|   nodejs-current \
 | |
|   npm \
 | |
|   krb5-libs \
 | |
|   rust \
 | |
|   docker-cli \
 | |
|   libffi-dev \
 | |
|   libc-dev \
 | |
|   docker-compose \
 | |
|   libc6-compat \
 | |
|   alpine-sdk \
 | |
|   && update-ca-certificates
 | |
| 
 | |
| # Re-set environment variables for final stage
 | |
| ENV PYTHONUNBUFFERED=1
 | |
| ENV PNPM_HOME="/root/.local/share/pnpm"
 | |
| ENV PATH="$PNPM_HOME:$PATH"
 | |
| ENV LD_PRELOAD /lib/stack-fix.so
 | |
| 
 | |
| # Validate installations in final stage
 | |
| RUN node -v && npm -v && pnpm -v
 | |
| 
 | |
| RUN pnpm config set unsafe-perm true
 |