mirror of
https://github.com/praetorian-inc/ChromeAlone
synced 2026-06-06 16:34:31 +00:00
102 lines
3.1 KiB
Docker
102 lines
3.1 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
# Avoid prompts during package installation
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Install basic dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
wget \
|
|
gnupg \
|
|
software-properties-common \
|
|
unzip \
|
|
git \
|
|
python3 \
|
|
python3-pip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Node.js and npm (works for both architectures)
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
|
|
&& apt-get install -y nodejs \
|
|
&& npm install -g npm@latest
|
|
|
|
# Install Go with architecture detection
|
|
RUN GO_VERSION=1.21.5 && \
|
|
ARCH=$(dpkg --print-architecture) && \
|
|
if [ "$ARCH" = "amd64" ]; then \
|
|
GO_ARCH="amd64"; \
|
|
elif [ "$ARCH" = "arm64" ]; then \
|
|
GO_ARCH="arm64"; \
|
|
else \
|
|
echo "Unsupported architecture: $ARCH" && exit 1; \
|
|
fi && \
|
|
curl -fsSL https://golang.org/dl/go${GO_VERSION}.linux-${GO_ARCH}.tar.gz -o go.tar.gz && \
|
|
tar -C /usr/local -xzf go.tar.gz && \
|
|
rm go.tar.gz
|
|
|
|
# Set Go environment variables
|
|
ENV GOROOT=/usr/local/go
|
|
ENV GOPATH=/go
|
|
ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH
|
|
|
|
# Create Go workspace
|
|
RUN mkdir -p $GOPATH/src $GOPATH/bin
|
|
|
|
# Verify Go installation
|
|
RUN go version
|
|
|
|
# Install .NET SDK with architecture detection
|
|
RUN mkdir -p /usr/share/dotnet && \
|
|
ARCH=$(dpkg --print-architecture) && \
|
|
if [ "$ARCH" = "amd64" ]; then \
|
|
DOTNET_ARCH="x64"; \
|
|
elif [ "$ARCH" = "arm64" ]; then \
|
|
DOTNET_ARCH="arm64"; \
|
|
else \
|
|
echo "Unsupported architecture: $ARCH" && exit 1; \
|
|
fi && \
|
|
curl -SL https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh -o dotnet-install.sh && \
|
|
chmod +x dotnet-install.sh && \
|
|
./dotnet-install.sh --channel 8.0 --install-dir /usr/share/dotnet --architecture $DOTNET_ARCH && \
|
|
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet && \
|
|
rm dotnet-install.sh
|
|
|
|
# Verify .NET installation
|
|
RUN dotnet --info
|
|
|
|
# Install AWS CLI with architecture detection
|
|
RUN ARCH=$(dpkg --print-architecture) && \
|
|
if [ "$ARCH" = "amd64" ]; then \
|
|
AWS_ARCH="x86_64"; \
|
|
elif [ "$ARCH" = "arm64" ]; then \
|
|
AWS_ARCH="aarch64"; \
|
|
else \
|
|
echo "Unsupported architecture: $ARCH" && exit 1; \
|
|
fi && \
|
|
curl "https://awscli.amazonaws.com/awscli-exe-linux-${AWS_ARCH}.zip" -o "awscliv2.zip" && \
|
|
unzip awscliv2.zip && \
|
|
./aws/install && \
|
|
rm -rf aws awscliv2.zip
|
|
|
|
# Install Terraform (HashiCorp repo supports both architectures automatically)
|
|
RUN wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | tee /usr/share/keyrings/hashicorp-archive-keyring.gpg \
|
|
&& echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list \
|
|
&& apt-get update && apt-get install -y terraform
|
|
|
|
# Create directory for AWS credentials
|
|
RUN mkdir -p /root/.aws
|
|
|
|
# Copy the build script
|
|
COPY build.sh /build.sh
|
|
RUN chmod +x /build.sh
|
|
|
|
# Set environment variables for .NET
|
|
ENV DOTNET_ROOT="/usr/share/dotnet"
|
|
ENV PATH="${PATH}:/usr/share/dotnet"
|
|
|
|
# Set working directory
|
|
WORKDIR /project
|
|
|
|
# Set the entrypoint to the build script
|
|
ENTRYPOINT ["/build.sh"]
|
|
CMD [] |