### FROM ubuntu:24.04 FROM public.ecr.aws/docker/library/ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Africa/Johannesburg # OS deps RUN apt-get update && apt-get install -y --no-install-recommends \ tzdata \ python3 python3-venv python3-pip \ openssh-client sshpass netcat-traditional \ vim gawk \ jq curl ca-certificates git \ && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \ && echo $TZ > /etc/timezone \ && dpkg-reconfigure -f noninteractive tzdata \ && rm -rf /var/lib/apt/lists/* ENV APP_DIR=/opt/containers/ansible-worker ENV DATA_DIR=${APP_DIR}/data ENV VENV_DIR=${DATA_DIR}/ansible_venv # Copy your Ansible project files into the image (immutable) # Expecting host: ./files/{ansible.cfg, inventory/, group_vars/, ...} COPY files/ ${APP_DIR}/app/ # Entry script will bootstrap the venv into DATA_DIR if missing COPY files/entrypoint.sh /usr/local/bin/ansible-entrypoint RUN chmod +x /usr/local/bin/ansible-entrypoint # Default config paths ENV ANSIBLE_CONFIG=${APP_DIR}/app/ansible.cfg # Optional: speed up password auth on Dropbear/OpenWrt devices ENV ANSIBLE_SSH_ARGS="-o PubkeyAuthentication=no" # put the venv on PATH for all processes (incl. docker exec sessions) ENV PATH="/opt/containers/ansible-worker/data/ansible_venv/bin:${PATH}" # keep collections in persistent storage #ENV ANSIBLE_COLLECTIONS_PATHS="/opt/containers/ansible-worker/data/collections:/usr/share/ansible/collections" ENV ANSIBLE_COLLECTIONS_PATH="/opt/containers/ansible-worker/data/collections:/usr/share/ansible/collections" ENV QUEUE="queue_deviceconfig,queue_persuasive" # Work from the "app" dir; data/ is mounted separately WORKDIR ${APP_DIR}/app # Keep container alive by default; entrypoint sets up venv+PATH ENTRYPOINT ["/usr/local/bin/ansible-entrypoint"] #CMD ["sleep", "infinity"] # …or, if it’s under bin and named rabbitmq-client.sh as you hinted: CMD ["/opt/containers/ansible-worker/app/bin/rabbitmq-client.sh"]