# 16-Sep-16 created /sf
# 02-Sep-16 updating for Centos7/jdm
# 07-Sep-16 add site_perl to miame for WriteExcel/jdm
# 09-Sep-16 add /vm/lib for ashell dynamic libraries/jdm
# 09-Sep-16 consolidate some of the layers/jdm
# 12-Apr-17 more layer consolidation /jdm
# 04-Sep-18 lib links? /jdm
# 13-May-26 Debian 12 revisions for Omniledger /jdm

# Notes on build environment:
#
#    /vm/docker                  - build directory
#    /vm/docker/miame/sys/001004 - clean SYS: (for -mntsys)
#    /vm/docker/miame/sys/002002 - clean CMD:
#    /vm/docker/miame/sys/007006 - clean BAS:
#    /vm/docker/miame/bin64      - ashell bin files 
#
# Runtime environment:
#
#   /vm/sys/######               - clean mntsys directories
#   /vm/sys/bin64                - A-Shell bin directory
#   /vm/lib                      - Auxiliary libraries
#   /vm/miame/*                  - Application /vm/miame mounted here
# 
# Note above assumes that application's miame.ini doesn't define 
# devices in /vm/sys or /vm/lib directories

FROM debian:12

# MAINTAINER <jack@microsabio.com>

RUN apt update && \
    apt install -y net-tools && \
    apt install -y libgnutls30 && \
    apt install -y libncurses-dev && \
    apt install -y libstdc++6 && \
    apt install -y libgcc-12-dev && \
    apt install -y libpcre3 libpcre3-dev && \
    apt install -y cups

RUN apt update -y && \
    apt clean -y

# COPY requirements.txt /tmp/ashell/requirements.txt
# RUN easy_install -U setuptools && \
#    pip install -r /tmp/ashell/requirements.txt

# not sure we need this since we are going to mount real /vm/miame later
RUN mkdir -p /vm/miame

# create directories for the -mntsys system logicals
RUN mkdir -p /vm/sys && \
    mkdir -p /vm/sys/001004 && \
    mkdir -p /vm/sys/002002 && \
    mkdir -p /vm/sys/007006 && \
    mkdir -p /vm/sys/bin64 && \
    mkdir -p /vm/lib

# MIAME clean system device (001004, 002002, 007006)
COPY miame/sys /vm/sys/

# A-Shell latest executables ...
COPY miame/bin64/* /vm/sys/bin64/

#set up directory for libraries used by ashell...
COPY lib /vm/lib/

#startup/launch script (for ENTRYPOINT)
COPY run.sh /opt/run.sh

RUN chmod 755 /opt/run.sh && \
    ln -s /vm/sys/bin64/libashtls.so.1.3.217-d12-x86_64 /usr/lib/libashtls.so.1 && \
    ln -s /vm/sys/bin64/libashnet.so.1.14.205-d12-x86_64 /usr/lib/libashnet.so.1 && \
    ln -s /vm/sys/bin64/libxl.so.4.5.0 /vm/sys/bin64/libxl.so.1 && \
    ln -s /vm/sys/bin64/libashmysql.so.1.6.151-d12-x86_64 /usr/lib/libashmysql.so.1 && \
    ln -s /vm/sys/bin64/libmysqlclient.so.24.0.6 /vm/sys/bin64/libmysqlclient.so &&\
    ln -s /vm/lib/mysql/libmysqlclient.so.24.0.6 /lib/libmysqlclient.so.24

ENV MIAME=/vm/miame

# remove ENTRYPOINT and launch with docker run -it -v /vm:/vm imagename 
# to have access to shell prompt
ENTRYPOINT ["/opt/run.sh"]
