74 lines
1.8 KiB
Docker
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
|