optimiser-solver/Dockerfile
Rudi Schlatte 15950057e3 Revert "Refine deployment process"
This reverts commit 72b2007bc4.

Reason for revert: Breaks deployment

Change-Id: I71a66e7e64999118a87e1d67962f96a9def538fb
2024-03-11 13:14:35 +00:00

51 lines
1.9 KiB
Docker

# syntax=docker/dockerfile:1.3-labs
FROM fedora:39 AS builder
# To build:
# docker build -t nebulous/solver .
# To run, resulting in a terminal for further experiments:
# docker run -it nebulous/solver
WORKDIR /solver
COPY ./ /solver
RUN <<EOF
# Development framework
dnf --assumeyes install gcc-c++ make git-core boost boost-devel ccache qpid-proton-cpp qpid-proton-cpp-devel json-c json-devel json-glib jsoncpp jsoncpp-devel coin-or-Couenne wget
# Dependencies
git clone https://github.com/jarro2783/cxxopts.git CxxOpts
git clone https://github.com/GeirHo/TheronPlusPlus.git Theron++
mkdir Theron++/Bin
# Install AMPL library
wget --no-verbose https://portal.ampl.com/external/?url=https://portal.ampl.com/dl/amplce/ampl.linux64.tgz -O ampl.linux64.tgz
tar --file=ampl.linux64.tgz --extract
mv ampl.linux-intel64 AMPL
rm ampl.linux64.tgz
EOF
# Make AMPL shared libraries findable
ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/solver/AMPL:/solver/AMPL/amplapi/lib"
# Build solver
RUN make SolverComponent -e THERON=./Theron++ AMPL_INCLUDE=./AMPL/amplapi/include AMPL_LIB=./AMPL/amplapi/lib CxxOpts_DIR=./CxxOpts/include
# ============================================================
FROM fedora:39
WORKDIR /solver
RUN dnf --assumeyes install boost qpid-proton-cpp json-c json-glib jsoncpp coin-or-Couenne
COPY --from=builder /solver /solver
ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/solver/AMPL:/solver/AMPL/amplapi/lib"
#
# We set constant `--ModelDir` and `--AMPLDir`; the other arguments can be
# given on the command line, like so (note that `--Endpoint` is mandatory):
#
# docker run nebulous/solver --Broker=https://somewhere.else/ --Endpoint=my-app-id
#
# For a shell, to diagnose problems etc.:
# docker run --rm -it --entrypoint /bin/bash nebulous/solver
ENTRYPOINT ["/solver/SolverComponent", "--ModelDir=/tmp", "--AMPLDir=/solver/AMPL"]