Running MMANA-GAL in Docker

Submitted by Drupal Master on

There is a nice Antenna simulation program named "MMANA-GAL". It exist in a pro, paid, version and a basic version which has some limitations. The basic version is great and is perfectly usable.

The basic program version is available at MMANA-GAL

Below is a description on how I run it on my Linux computer. The description requires quite a lot knowledge of Linux and Docker. Basically only the content of the files are documented below. How to use and run them needs to be known.

I do a trick to both be able to install MMANA-GAL and run it from the same instance. I don't know if I have missed something, but it works.

My Dockerfile looks like this:
FROM ubuntu:focal AS winebase
RUN dpkg --add-architecture i386
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive TZ="Europe/Stockholm" apt-get -y install tzdata
RUN apt-get install -y apt-utils && apt-get install -y unzip && apt-get install -y wine32
COPY /home/wine/
COPY wine-selector /home/wine/
RUN groupadd -g 1000 wine
RUN useradd -d /home/wine -s /bin/bash -m wine -u 1000 -g 1000
RUN mkdir -p /home/wine/.wine/drive_c/MMANA-GALBasic3/datafiles
RUN unzip /home/wine/ -d /home/wine
RUN chown -R wine:wine /home/wine
RUN chmod -R ug+x /home/wine
USER wine
ENV HOME /home/wine
CMD /home/wine/wine-selector

The build command looks like this:
docker build -t antenna-simulation .

And when I run it the following command is used:

docker run -i -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -h $HOSTNAME -v $HOME/.Xauthority:/home/wine/.Xauthority  --mount type=bind,source="$(pwd)",target=/home/wine/.wine/drive_c/MMANA-GALBasic3/datafiles --name Antenna-Sim antenna-simulation:latest

Everything must be on one line otherwise it will not work. As seen in the Dockerfile the CMD line point to a file called wine-selector. This is where the "magic" happens. This file must in the same directory as the Dockerfile together with the file. The later has to be downloaded from their web and renamed to the zip-filename used in the script which is

The content of wine-selector is a simple script that checks if the program has been installed. If not, it installs it during the first start (normally when you run the container for the first time). The second and following times you start the container it instead start up the simulation program. Don't change any directories when you install the program in wine the first time. Everything is hard-coded in the different files.

if [ -f ${HOME}/.wine/drive_c/MMANA-GALBasic3/MMANAGALBasic35.exe ]; then
        wine ${HOME}/.wine/drive_c/MMANA-GALBasic3/MMANAGALBasic35.exe ;
        wine ${HOME}/mmbasic.exe;