first commit
This commit is contained in:
54
Dockerfile
Normal file
54
Dockerfile
Normal file
@@ -0,0 +1,54 @@
|
||||
### 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"]
|
||||
Reference in New Issue
Block a user