54 lines
1.3 KiB
Docker
54 lines
1.3 KiB
Docker
FROM ubuntu:focal AS final
|
|
FROM ubuntu:focal AS build
|
|
|
|
### Build stage
|
|
|
|
# Install curl and git and smp-related dependencies
|
|
RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev libnuma1 libnuma-dev llvm
|
|
|
|
# Install ghcup
|
|
RUN curl https://downloads.haskell.org/~ghcup/aarch64-linux-ghcup -o /usr/bin/ghcup && \
|
|
chmod +x /usr/bin/ghcup
|
|
|
|
# Install ghc
|
|
RUN ghcup install ghc
|
|
# Install cabal
|
|
RUN ghcup install cabal
|
|
# Set both as default
|
|
RUN ghcup set ghc && \
|
|
ghcup set cabal
|
|
|
|
# Clone simplexmq repository
|
|
RUN git clone https://github.com/simplex-chat/simplexmq
|
|
# and cd to it
|
|
WORKDIR ./simplexmq
|
|
|
|
# Adjust PATH
|
|
ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH"
|
|
|
|
# Compile smp-server
|
|
RUN cabal update
|
|
RUN cabal install
|
|
|
|
### Final stage
|
|
|
|
FROM final
|
|
|
|
# Install OpenSSL dependency
|
|
RUN apt-get update && apt-get install -y openssl libnuma1 libnuma-dev
|
|
|
|
# Copy compiled smp-server from build stage
|
|
COPY --from=build /root/.cabal/bin/smp-server /usr/bin/smp-server
|
|
|
|
# Copy our helper script
|
|
COPY ./entrypoint /usr/bin/entrypoint
|
|
|
|
# Open smp-server listening port
|
|
EXPOSE 5223
|
|
|
|
# SimpleX requires using SIGINT to correctly preserve undelivered messages and restore them on restart
|
|
STOPSIGNAL SIGINT
|
|
|
|
# Finally, execute helper script
|
|
ENTRYPOINT [ "/usr/bin/entrypoint" ]
|