Skip to content
Snippets Groups Projects
Dockerfile 1.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • FROM debian:stable
    
    maritn's avatar
    maritn committed
    # e.g. 5.41.0
    ARG MAXIMA_VERSION
    
    # e.g. 2.0.22.0.2
    
    maritn's avatar
    maritn committed
    ARG SBCL_VERSION
    
    maritn's avatar
    maritn committed
    ENV SRC=/opt/src \
        LIB=/opt/maxima/lib \
        LOG=/opt/maxima/log \
        TMP=/opt/maxima/tmp \
        PLOT=/opt/maxima/plot \
        ASSETS=/opt/maxima/assets \
        BIN=/opt/maxima/bin
    
    Lennart Kramer's avatar
    Lennart Kramer committed
    COPY ./src/maxima_fork.c /
    COPY ./buildscript.sh /
    
    maritn's avatar
    maritn committed
    
    
    Lennart Kramer's avatar
    Lennart Kramer committed
    RUN bash /buildscript.sh
    
    
    # e.g. assStackQuestion/classes/stack/maxima
    ARG LIB_PATH
    
    RUN echo ${LIB_PATH?Error \$LIB_PATH is not defined}
    
    maritn's avatar
    maritn committed
    # Copy Libraries
    COPY ${LIB_PATH} ${LIB}
    
    # Copy optimization scripts
    
    COPY assets/maxima-fork.lisp assets/optimize.mac.template assets/maximalocal.mac.template ${ASSETS}/
    
    maritn's avatar
    maritn committed
    
    RUN grep stackmaximaversion ${LIB}/stackmaxima.mac | grep -oP "\d+" >> /opt/maxima/stackmaximaversion \
        && sh -c 'envsubst < ${ASSETS}/maximalocal.mac.template > ${ASSETS}/maximalocal.mac \
        && envsubst < ${ASSETS}/optimize.mac.template > ${ASSETS}/optimize.mac ' \
        && cat ${ASSETS}/maximalocal.mac && cat ${ASSETS}/optimize.mac \
        && cd ${ASSETS} \
        && maxima -b optimize.mac \
    
        && mv maxima-optimised ${BIN}/maxima-optimised \
        && for i in $(seq 16); do \
    
               useradd -M "maxima-$i"; \
    
    maritn's avatar
    maritn committed
    # Add go webserver
    COPY ./bin/web ${BIN}/goweb
    
    Lennart Kramer's avatar
    Lennart Kramer committed
    ENV GOEMAXIMA_LIB_PATH=/opt/maxima/assets/maximalocal.mac
    
    Lennart Kramer's avatar
    Lennart Kramer committed
    CMD rm /dev/tty && cd /tmp && rm --one-file-system -rf * && exec tini ${BIN}/goweb ${BIN}/maxima-optimised