Files
nats-scheduler/Dockerfile
2025-10-28 07:07:03 +02:00

49 lines
2.3 KiB
Docker

# 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"]