# Simpler base: Debian slim + Python + pip out of the box FROM python:3.12-slim ENV DEBIAN_FRONTEND=noninteractive ENV APP_DIR=/opt/containers/nats-registration-listener ENV DATA_DIR=${APP_DIR}/data ENV PATH=/usr/local/bin:$PATH # Minimal tools we actually use: # - tini: pid1 # - curl: optional for TLS_CA_URL # - dos2unix: fix CRLF if committed from Windows # (jq is optional; if you don't need it, remove it) RUN apt-get update && apt-get install -y --no-install-recommends \ tini curl dos2unix \ && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates tini curl dos2unix \ && rm -rf /var/lib/apt/lists/* # Python deps (no venv needed on this base image) RUN python -m pip install --no-cache-dir --upgrade pip nats-py # App payload (immutable inside image) RUN mkdir -p ${APP_DIR}/app/bin COPY files/nats-registration-listener.sh ${APP_DIR}/app/bin/nats-registration-listener.sh COPY files/entrypoint.sh /usr/local/bin/nats-registration-entrypoint COPY files/healthcheck.sh /usr/local/bin/nats-registration-healthcheck COPY files/nats_registration_listener.py /usr/local/bin/nats_registration_listener.py # Normalize line endings (CRLF/BOM safe) and set exec bits RUN sed -i '1s/^\xEF\xBB\xBF//' /usr/local/bin/nats-registration-entrypoint && \ sed -i '1s/^\xEF\xBB\xBF//' /usr/local/bin/nats-registration-healthcheck && \ sed -i '1s/^\xEF\xBB\xBF//' /opt/containers/nats-registration-listener/app/bin/nats-registration-listener.sh && \ sed -i '1s/^\xEF\xBB\xBF//' /usr/local/bin/nats_registration_listener.py && \ dos2unix /usr/local/bin/nats-registration-entrypoint \ /usr/local/bin/nats-registration-healthcheck \ /opt/containers/nats-registration-listener/app/bin/nats-registration-listener.sh \ /usr/local/bin/nats_registration_listener.py && \ chmod +x /usr/local/bin/nats-registration-entrypoint \ /usr/local/bin/nats-registration-healthcheck \ /opt/containers/nats-registration-listener/app/bin/nats-registration-listener.sh WORKDIR ${APP_DIR}/app # Run via bash explicitly to avoid any shebang weirdness ENTRYPOINT ["/usr/bin/tini", "--", "/bin/bash", "-lc", "/usr/local/bin/nats-registration-entrypoint"] CMD ["/opt/containers/nats-registration-listener/app/bin/nats-registration-listener.sh"]