FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g5 libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local /usr/local RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\n/usr/local/sbin/xrdp-sesman &\n/usr/local/sbin/xrdp &\nwait -n\nEOF\nchmod +x /start.sh' EXPOSE 3389 CMD ["/start.sh"]
**/.git **/node_modules **/__pycache__ *.log
Summary of Docker build error
- Failing step (command):
Dockerfile:18
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates libpam0g5 libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \
&& rm -rf /var/lib/apt/lists/*
- Exact error message and exit code:
E: Unable to locate package libpam0g5
The overall failure ends with: failed to build: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates libpam0g5 libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100
- Missing packages or files mentioned:
- libpam0g5 (not found in the repository)
- Version mismatch / repo info:
- Base image is ubuntu:22.04 (jammy). The package libpam0g5 is not available in jammy’s apt repositories (apt reports “Unable to locate package libpam0g5”). A separate stage uses libpam0g-dev (which exists), indicating inconsistent package names across stages and a possible package-name/version mismatch for this base image.FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local /usr/local RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\n/usr/local/sbin/xrdp-sesman &\n/usr/local/sbin/xrdp &\nwait -n\nEOF\nchmod +x /start.sh' EXPOSE 3389 CMD ["/start.sh"]
Concerns: The RUN command that creates /start.sh uses a heredoc with literal \n sequences, which will likely not produce a valid multi-line script. This will cause the image build to fail or /start.sh to be missing or invalid., The runtime image expects /usr/local/sbin/xrdp-sesman and /usr/local/sbin/xrdp to exist; unless the build actually compiles and installs xrdp, these binaries may be missing, causing runtime failure even if the build step succeeds., No .dockerignore is shown, which could lead to large build contexts and slower builds.
FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g5 libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local /usr/local RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\n/usr/local/sbin/xrdp-sesman &\n/usr/local/sbin/xrdp &\nwait -n\nEOF\nchmod +x /start.sh' EXPOSE 3389 CMD ["/start.sh"]
Concerns: The RUN that creates /start.sh uses a here-doc with escaped newlines (<< "EOF" followed by \n sequences inside a single-quoted string). This will not produce a valid multi-line script, likely resulting in a broken /start.sh or build failure., The start script uses /bin/sh (dash) and 'wait -n'. Dash's wait does not support the -n option, so the script may fail to start the services (xrdp-sesman and xrdp)., The final image relies on building and installing xrdp components via ./bootstrap, ./configure, etc., which may fail if the build prerequisites or repository layout differ in the monorepo. The Dockerfile assumes a specific project structure.
FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src # Build from source RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local /usr/local RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\n\n# Start services in background and wait for them in foreground\n/usr/local/sbin/xrdp-sesman & SESMAN_PID=$!\n/usr/local/sbin/xrdp & XRDP_PID=$!\n\nwait $SESMAN_PID\nwait $XRDP_PID\nEOF\nchmod +x /start.sh' EXPOSE 3389 CMD ["/start.sh"]
Concerns: Potential syntax error creating /start.sh: the RUN instruction uses a here-doc with a quoted EOF and appears to inject literal "\n" sequences instead of actual newlines, which would likely produce an invalid script or fail to build., Unclear if the build actually installs xrdp-sesman and xrdp into /usr/local/sbin; if not, the start script will fail at runtime., Starting xrdp inside a container may require privileged runtime features (e.g., access to /dev/fuse or host X11 components) which are not addressed or guaranteed in this Dockerfile.
FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src # Build from source RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local /usr/local RUN printf '%s\n' '#!/bin/sh' 'set -e' '' '/usr/local/sbin/xrdp-sesman &' '/usr/local/sbin/xrdp &' 'wait -n' 'exit 0' > /start.sh \ && chmod +x /start.sh EXPOSE 3389 CMD ["/start.sh"]
Concerns: The start script uses 'wait -n', which is not part of POSIX/sh and may not be supported by /bin/sh (dash) in Ubuntu. This can cause the container's entrypoint to fail to start or behave unpredictably., No explicit verification that the build will succeed in all environments; if bootstrap/configure/make fail, the final image will not contain the expected /usr/local binaries, yet the runtime stage may still claim readiness., Runtime dependency handling could be brittle (e.g., missing runtime libraries or mismatched libxxx versions) since /usr/local is copied from builder but runtime libs are installed separately; ensure compatibility between build and runtime stages.
FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src # Build from source RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local /usr/local RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\n/usr/local/sbin/xrdp-sesman &\nSESMAN_PID=$!\n/usr/local/sbin/xrdp &\nXRDP_PID=$!\nwait $SESMAN_PID $XRDP_PID\nEOF\nchmod +x /start.sh' EXPOSE 3389 CMD ["/start.sh"]
Summary of Docker build error - Failing command/step - [builder 5/5] RUN ./bootstrap && ./configure && make -j$(nproc) && make install - Exact error message(s) and exit code - fatal: unable to access 'https://github.com/neutrinolabs/libpainter.git/': server certificate verification failed. CAfile: none CRLfile: none - fatal: clone of 'https://github.com/neutrinolabs/libpainter.git' into submodule path '/src/libpainter' failed - fatal: unable to access 'https://github.com/neutrinolabs/librfxcodec.git/': server certificate verification failed. CAfile: none CRLfile: none - fatal: clone of 'https://github.com/neutrinolabs/librfxcodec.git' into submodule path '/src/librfxcodec' failed - fatal: unable to access 'https://github.com/neutrinolabs/ulalaca-xrdp.git/': server certificate verification failed. CAfile: none CRLfile: none - fatal: clone of 'https://github.com/neutrinolabs/ulalaca-xrdp.git' into submodule path '/src/ulalaca' failed - autoreconf: configure.ac:661: error: required file 'ulalaca/Makefile.in' not found - autoreconf: automake failed with exit status: 1 - The overall Docker build ended with: exit code 1 - Missing packages/files mentioned - Submodule clones failing for libpainter, librfxcodec, ulalaca (server certificate verification failed) - Missing file: ulalaca/Makefile.in (autoreconf/automake failure) - Version mismatch / environment notes - Base image uses Ubuntu 22.04 - The bundle of apt-get installs shows multiple GCC toolchain packages being upgraded/installed (e.g., gcc-12-base, libstdc++6, gcc-11, etc.), indicating a mixed/heterogeneous toolchain version set during the build - Context / probable root cause - Submodule fetches fail due to TLS certificate verification (CAfile: none), preventing required submodules from being checked out, which leads to missing Makefile.in and subsequent autoreconf/automake failure.
FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src # Build from source RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local /usr/local RUN printf '%s\n' '#!/bin/sh' 'set -e' '' '/usr/local/sbin/xrdp-sesman &' 'SESMAN_PID=$!' '/usr/local/sbin/xrdp &' 'XRDP_PID=$!' 'wait $SESMAN_PID $XRDP_PID' > /start.sh \ && chmod +x /start.sh EXPOSE 3389 CMD ["/start.sh"]
- Exact error message and exit code: - configure: error: please install libxkbfile-dev or libxkbfile-devel - Exit code: 1 - Failing command/step: - [builder 5/5] RUN ./bootstrap && ./configure && make -j$(nproc) && make install - Missing packages or files mentioned: - libxkbfile-dev or libxkbfile-devel (developer headers for XKB) - Version mismatch / environment info: - Base image context shows Ubuntu 22.04 (jammy) being used (FROM ubuntu:22.04), but the configure step failed due to a missing dev package (libxkbfile-dev/libxkbfile-devel) rather than a version mismatch.
FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ libxkbfile-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src # Build from source RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* RUN ldconfig COPY --from=builder /usr/local /usr/local RUN printf '%s\n' '#!/bin/sh' 'set -e' '' '/usr/local/sbin/xrdp-sesman &' 'SESMAN_PID=$!' '/usr/local/sbin/xrdp &' 'XRDP_PID=$!' 'wait $SESMAN_PID $XRDP_PID' > /start.sh \ && chmod +x /start.sh EXPOSE 3389 CMD ["/start.sh"]
- Exact error message and exit code - Exit code: 1 - Error: configure: error: no nasm (Netwide Assembler) found - Failing command/step - Failing step: [builder 5/5] RUN ./bootstrap && ./configure && make -j$(nproc) && make install - Dockerfile reference: the RUN line that builds from source (librfxcodec) invoked bootstrap, configure, make, install; the configure phase failed. - Missing packages or files mentioned - nasm (Netwide Assembler) is not found in the build environment; required by librfxcodec configure. - Version mismatch info - No explicit version mismatch reported. Base image is Ubuntu 22.04, with various GCC/libc-dev packages installed, but the failure is due to missing NASM. - Remediation suggestion - Install NASM before running bootstrap/configure, e.g.: apt-get update && apt-get install -y nasm Additional context - The failure occurs during librfxcodec configuration within the librfxcodec submodule of the build.
FROM ubuntu:22.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ nasm \ build-essential autoconf automake libtool pkg-config git \ openssl libssl-dev libpam0g-dev libx11-dev libxfixes-dev libxrandr-dev libpixman-1-dev \ libjpeg-dev libimlib2-dev fuse3 \ libxkbfile-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . /src # Build from source RUN ./bootstrap && ./configure && make -j$(nproc) && make install FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libpam0g libx11-6 libxext6 libxfixes3 libxrandr2 libpixman-1-0 libglib2.0-0 libssl3 zlib1g \ && rm -rf /var/lib/apt/lists/* RUN ldconfig COPY --from=builder /usr/local /usr/local RUN printf '%s\n' '#!/bin/sh' 'set -e' '' '/usr/local/sbin/xrdp-sesman &' 'SESMAN_PID=$!' '/usr/local/sbin/xrdp &' 'XRDP_PID=$!' 'wait $SESMAN_PID $XRDP_PID' > /start.sh \ && chmod +x /start.sh EXPOSE 3389 CMD ["/start.sh"]
Concerns: No HEALTHCHECK defined; adding a health check would help detect when the xrdp process dies, The startup script starts two processes in background and uses wait; if either crashes, container exits, which is typical but may hide issues; consider using a supervisor or ensure proper logging, Running as root with no non-root user; potential security improvement by adding a dedicated user Smoke [PASS]: test -x /usr/local/sbin/xrdp-sesman && test -x /usr/local/sbin/xrdp Smoke [PASS]: test -f /start.sh && [ -x /start.sh ] Smoke [PASS]: ldd /usr/local/sbin/xrdp-sesman | head -n 5