70 lines
2.7 KiB
Docker
70 lines
2.7 KiB
Docker
ARG FROM_IMG=docker.io/library/haskell
|
|
ARG FROM_TAG=8.10.4
|
|
|
|
FROM ${FROM_IMG}:${FROM_TAG}
|
|
|
|
ENV LANG=de_DE.UTF-8
|
|
|
|
# compile-time dependencies
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get -y update && apt-get install -y libpq-dev libsodium-dev
|
|
# RUN apt-get -y update && apt-get -y install llvm
|
|
# RUN apt-get -y update && apt-get -y install g++ libghc-zlib-dev libpq-dev libsodium-dev pkg-config
|
|
# RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get -y update && apt-get install -y --no-install-recommends locales locales-all
|
|
|
|
# run-time dependencies for uniworx binary
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get -y update && apt-get -y install fonts-roboto
|
|
# RUN apt-get -y update && apt-get -y install pdftk
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get -y update && apt-get -y install texlive-latex-recommended texlive-luatex texlive-plain-generic texlive-lang-german texlive-lang-english
|
|
|
|
# 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}
|
|
|
|
COPY stack.yaml ${PROJECT_DIR}/stack.yaml
|
|
COPY stack.yaml.lock ${PROJECT_DIR}/stack.yaml.lock
|
|
COPY package.yaml ${PROJECT_DIR}/package.yaml
|
|
RUN stack install yesod-bin
|
|
RUN stack install hpack
|
|
|
|
# pre-build dependencies
|
|
RUN make -- --dependencies-backend STACK_ROOT=${STACK_ROOT} IN_CONTAINER=true JOB=${JOB}
|
|
COPY . ${PROJECT_DIR}
|
|
|
|
# copy source files
|
|
#COPY app/ ${PROJECT_DIR}/app
|
|
#COPY src/ ${PROJECT_DIR}/src
|
|
#COPY models/ ${PROJECT_DIR}/models
|
|
#COPY messages/ ${PROJECT_DIR}/messages
|
|
#COPY templates/ ${PROJECT_DIR}/templates
|
|
#COPY test/ ${PROJECT_DIR}/test
|
|
#COPY testdata/ ${PROJECT_DIR}/testdata
|
|
|
|
# copy frontend files
|
|
#COPY assets/ ${PROJECT_DIR}/assets
|
|
#COPY static/ ${PROJECT_DIR}/static
|
|
#COPY well-known/ ${PROJECT_DIR}/well-known
|
|
|
|
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 |