From 23272f5cad4c8aa1935f241f71150964b0dff954 Mon Sep 17 00:00:00 2001 From: "artem.lobach" Date: Tue, 26 Aug 2025 16:19:51 +0300 Subject: [PATCH 1/4] feat: Fix Dockerfile build errors --- Dockerfile | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4effccb..6b43169 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,36 +1,23 @@ -FROM ubuntu:18.04 AS main +FROM ubuntu:20.04 AS main -RUN apt-get update && apt-get install -y wget unzip sudo && rm -rf /var/lib/apt/lists/* +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + wget unzip sudo coreutils xpra python3-pip sed runc && rm -rf /var/lib/apt/lists/* RUN wget https://gitlab.com/emulation-as-a-service/emucon-tools/-/archive/master/emucon-tools-master.zip -O /tmp/emucon-tools-master.zip RUN unzip /tmp/emucon-tools-master.zip -d /tmp/ && \ - ls -la /tmp/ && \ - ls -la /tmp/emucon-tools-master || true + cp -vrp /tmp/emucon-tools-master/runtime/bin /usr/local && \ + cp -vrp /tmp/emucon-tools-master/runtime/lib /usr/local && \ + cp -vrp /tmp/emucon-tools-master/runtime/share /usr/local -RUN addgroup --gid 1000 bwfla -RUN addgroup fuse -RUN useradd -ms /bin/bash --uid 1000 --gid bwfla bwfla && for grp in fuse disk audio plugdev; do adduser bwfla $grp; done +RUN mkdir -p /tmp/nics/nic1 -RUN chown bwfla:bwfla /home/bwfla +RUN cp /tmp/emucon-tools-master/builder/commands/layer/layers/base/scripts/emucon-init /usr/bin/ +RUN chmod +x /usr/bin/emucon-init -USER bwfla +RUN sed -i '$s/$/ -nolisten local/' /etc/xpra/conf.d/55_server_x11.conf +RUN sed -i '$s/-auth *[^ ]*//' /etc/xpra/conf.d/55_server_x11.conf -RUN mkdir -p /home/bwfla/.bwFLA \ -/home/bwfla/demo-ui \ -/home/bwfla/image-archive \ -/home/bwfla/log \ -/home/bwfla/objects \ -/home/bwfla/server-data \ -/home/bwfla/import \ -/home/bwfla/export \ -/home/bwfla/defaults - -RUN cd /tmp/emucon-tools-master && \ - . ./bootstrap.sh && \ - . ./install.sh --destination /usr/local -u bwfla && \ - ./installer/install-oci-tools.sh --destination /tmp/oci-tools && \ - ./installer/install-deps.sh FROM maven:3.8.6-eclipse-temurin-11 AS build @@ -49,8 +36,9 @@ FROM eclipse-temurin:11-jdk-jammy RUN echo "locales locales/default_environment_locale string en_US.UTF-8" | debconf-set-selections RUN echo "keyboard-configuration keyboard-configuration/layoutcode string us" | debconf-set-selections RUN DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get install -y xpra socat vde2 qemu-utils qemu-system ntfs-3g util-linux sudo unzip -RUN rm -rf /var/lib/apt/lists/* + +RUN apt-get update && apt-get install -y --no-install-recommends runc xpra socat vde2 qemu-utils ntfs-3g util-linux sudo unzip coreutils && rm -rf /var/lib/apt/lists/* + RUN mkdir -p /linapple-pie /minivmac /usr/local/bin @@ -60,7 +48,11 @@ COPY --from=build /app/emucomp-api/target/quarkus-app/lib/ ./lib/ COPY --from=build /app/emucomp-api/target/quarkus-app/app/ ./app/ COPY --from=build /app/emucomp-api/target/quarkus-app/quarkus/ ./quarkus/ -COPY --from=main /tmp/oci-tools /usr/local +COPY --from=main /etc/xpra/conf.d/55_server_x11.conf /etc/xpra/conf.d/55_server_x11.conf + +COPY --from=main /usr/bin/emucon-init /usr/bin/ +COPY --from=main /usr/local /usr/local EXPOSE 8080 -CMD ["java", "-jar", "./quarkus-run.jar"] + +CMD ["/bin/bash", "-c", "/usr/bin/emucon-init --networks-dir=/tmp/nics --xpra-socket=/tmp/xpra-socket -- java -jar ./quarkus-run.jar"] From 6cefb5c9ca2db7cf228536218824942a5ba0a68a Mon Sep 17 00:00:00 2001 From: "artem.lobach" Date: Mon, 8 Sep 2025 13:53:49 +0300 Subject: [PATCH 2/4] Added required steps for execution and builds --- Dockerfile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6b43169..a8185c0 100755 --- a/Dockerfile +++ b/Dockerfile @@ -8,12 +8,11 @@ RUN wget https://gitlab.com/emulation-as-a-service/emucon-tools/-/archive/master RUN unzip /tmp/emucon-tools-master.zip -d /tmp/ && \ cp -vrp /tmp/emucon-tools-master/runtime/bin /usr/local && \ cp -vrp /tmp/emucon-tools-master/runtime/lib /usr/local && \ - cp -vrp /tmp/emucon-tools-master/runtime/share /usr/local - -RUN mkdir -p /tmp/nics/nic1 - -RUN cp /tmp/emucon-tools-master/builder/commands/layer/layers/base/scripts/emucon-init /usr/bin/ -RUN chmod +x /usr/bin/emucon-init + cp -vrp /tmp/emucon-tools-master/runtime/share /usr/local && \ + mkdir -p /tmp/nics/nic1 && \ + install -v -m 'a=rx' /tmp/emucon-tools-master/builder/commands/layer/layers/base/scripts/emucon-init /usr/bin/emucon-init && \ + chmod +x /usr/bin/emucon-init && \ + . /tmp/emucon-tools-master/bootstrap.sh RUN sed -i '$s/$/ -nolisten local/' /etc/xpra/conf.d/55_server_x11.conf RUN sed -i '$s/-auth *[^ ]*//' /etc/xpra/conf.d/55_server_x11.conf From 6e2e799d335ff1f0990b30ff9981015cf05a32d3 Mon Sep 17 00:00:00 2001 From: "artem.lobach" Date: Mon, 8 Sep 2025 16:34:56 +0300 Subject: [PATCH 3/4] Removed creation of network directories --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a8185c0..c958243 100755 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,6 @@ RUN unzip /tmp/emucon-tools-master.zip -d /tmp/ && \ cp -vrp /tmp/emucon-tools-master/runtime/bin /usr/local && \ cp -vrp /tmp/emucon-tools-master/runtime/lib /usr/local && \ cp -vrp /tmp/emucon-tools-master/runtime/share /usr/local && \ - mkdir -p /tmp/nics/nic1 && \ install -v -m 'a=rx' /tmp/emucon-tools-master/builder/commands/layer/layers/base/scripts/emucon-init /usr/bin/emucon-init && \ chmod +x /usr/bin/emucon-init && \ . /tmp/emucon-tools-master/bootstrap.sh From 0981aa746e19d4749758b59391413e0d568ce6fd Mon Sep 17 00:00:00 2001 From: "artem.lobach" Date: Mon, 15 Sep 2025 12:33:39 +0300 Subject: [PATCH 4/4] Xpra initialization on startup --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index c958243..aa202fb 100755 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,9 @@ RUN unzip /tmp/emucon-tools-master.zip -d /tmp/ && \ cp -vrp /tmp/emucon-tools-master/runtime/share /usr/local && \ install -v -m 'a=rx' /tmp/emucon-tools-master/builder/commands/layer/layers/base/scripts/emucon-init /usr/bin/emucon-init && \ chmod +x /usr/bin/emucon-init && \ + sed -i '/--html=off/a\\t --speaker=on \\\n\t --pulseaudio=yes \\\n\t \ + --pulseaudio-server=unix:\/tmp\/${display#:}\/pulse-socket \\\n\t \ + --speaker-codec=opus \\\n\t --audio-source=pulse' /usr/bin/emucon-init && \ . /tmp/emucon-tools-master/bootstrap.sh RUN sed -i '$s/$/ -nolisten local/' /etc/xpra/conf.d/55_server_x11.conf