Files
postgrest/.github/scripts/arm/docker-env/Dockerfile
T

74 lines
1.8 KiB
Docker

# Build PostgREST for ARM architectures
FROM ubuntu:focal as postgrest-build
RUN apt-get update -y \
&& apt-get upgrade -y \
&& apt-get install -y git build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 llvm libnuma-dev zlib1g-dev libpq-dev jq gcc \
&& apt-get clean
# Install ghcup
ENV BOOTSTRAP_HASKELL_NONINTERACTIVE=1
RUN bash -c "curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh"
# Add ghcup to PATH
ENV PATH=${PATH}:/root/.local/bin
ENV PATH=${PATH}:/root/.ghcup/bin
# Install cabal
RUN bash -c "ghcup upgrade"
RUN bash -c "ghcup install cabal 3.4.0.0"
RUN bash -c "ghcup set cabal 3.4.0.0"
# Install GHC
RUN bash -c "ghcup install ghc 8.10.7"
RUN bash -c "ghcup set ghc 8.10.7"
# Update Path to include Cabal and GHC exports
RUN bash -c "echo PATH="$HOME/.local/bin:$PATH" >> $HOME/.bashrc"
RUN bash -c "echo export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" >> $HOME/.bashrc"
RUN bash -c "source $HOME/.bashrc"
# Clone the repository
RUN git clone https://github.com/PostgREST/postgrest.git /postgrest
WORKDIR /postgrest
RUN cabal v2-update && cabal v2-build
# Arguments are declared here to save the above installation in cache
ARG PGRST_GITHUB_COMMIT
RUN git pull origin main \
&& git checkout $PGRST_GITHUB_COMMIT
# Build PostgREST
RUN mkdir -p /build-export
RUN cabal v2-update && cabal v2-build
RUN PGRST_BIN=$(cabal exec which postgrest | tail -1) \
&& mv $PGRST_BIN /build-export
# Simple image to generate the PostgREST binaries
FROM scratch as postgrest-bin
COPY --from=postgrest-build /build-export /
# PostgREST docker hub image
FROM ubuntu:focal AS postgrest
RUN apt-get update -y
RUN apt install libpq-dev zlib1g-dev jq gcc libnuma-dev -y
RUN apt-get clean
COPY --from=postgrest-bin postgrest /usr/bin/postgrest
EXPOSE 3000
USER 1000
CMD postgrest