FROM docker.io/ubuntu:latest # DEBUG: list apt sources RUN grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* # compile-time dependencies RUN apt-get -y update && apt-get -y install haskell-stack git RUN apt-get -y update && apt-get -y install alex g++ happy libghc-zlib-dev libpq-dev libsodium-dev pkg-config RUN apt-get -y update && apt-get -y install llvm RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata RUN apt-get -y update && apt-get -y install locales locales-all # run-time dependencies for uniworx binary RUN apt-get -y update && apt-get -y install fonts-roboto RUN apt-get -y update && apt-get -y install pdftk RUN apt-get -y update && apt-get -y install texlive-base luatex ENV LANG=en_US.UTF-8 # locally these two should be identical, so that compilation results are written out into the file dir. # in CI-pipelines these two should be different, so that the container caches the compilation results. ARG MOUNT_DIR=/mnt/fradrive ARG PROJECT_DIR=/fradrive RUN mkdir -p "${PROJECT_DIR}" RUN if [ "${PROJECT_DIR}" != "${MOUNT_DIR}" ] ; then cp -r "${MOUNT_DIR}"/* "${PROJECT_DIR}" ; fi RUN mkdir -p "${PROJECT_DIR}/.stack" ENV STACK_ROOT="${PROJECT_DIR}/.stack" WORKDIR ${PROJECT_DIR} ENV HOME=${PROJECT_DIR} RUN make -- --dependencies-backend STACK_ROOT=${STACK_ROOT} IN_CONTAINER=true JOB=${JOB} RUN stack install yesod-bin RUN stack install hpack ENV FRADRIVE_MAKE_TARGET=--start-backend ENTRYPOINT make -- ${FRADRIVE_MAKE_TARGET} STACK_ROOT="${STACK_ROOT}" IN_CONTAINER=true CONTAINER_FILE="${CONTAINER_FILE}" JOB="${JOB}" SRC="${SRC}" EXPOSE 3000/tcp EXPOSE 3443/tcp