This commit is contained in:
2025-11-13 11:52:09 +01:00
parent a0eac46de2
commit bfd19299ab
6 changed files with 586 additions and 0 deletions

60
docker/Dockerfile Normal file
View File

@@ -0,0 +1,60 @@
# syntax=docker/dockerfile:1.6
FROM python:3.11-slim AS runtime
ENV PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
ANSIBLE_FORCE_COLOR=1
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
openssh-client \
sshpass \
git \
curl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/ansible-ui
RUN useradd --create-home --shell /bin/bash appuser \
&& mkdir -p \
/opt/ansible-ui/app \
/opt/ansible/playbooks \
/opt/ansible/inventories \
/opt/ansible/ssh-keys \
/var/lib/ansible_ui \
/var/log/ansible_ui \
&& chown -R appuser:appuser \
/opt/ansible-ui \
/opt/ansible/playbooks \
/opt/ansible/inventories \
/opt/ansible/ssh-keys \
/var/lib/ansible_ui \
/var/log/ansible_ui
RUN pip install --no-cache-dir \
ansible \
fastapi \
uvicorn[standard] \
jinja2 \
python-multipart \
aiofiles
COPY app /opt/ansible-ui/app
USER appuser
ENV DATA_ROOT=/opt/ansible-ui \
PLAYBOOK_DIR=/opt/ansible/playbooks \
INVENTORY_DIR=/opt/ansible/inventories \
SSH_KEY_DIR=/opt/ansible/ssh-keys \
DB_PATH=/var/lib/ansible_ui/ansible_ui.db \
LOG_DIR=/var/log/ansible_ui \
HTPASSWD_PATH=/opt/ansible-ui/.htpasswd
VOLUME ["/opt/ansible/playbooks", "/opt/ansible/inventories", "/opt/ansible/ssh-keys", "/var/lib/ansible_ui", "/var/log/ansible_ui"]
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

29
docker/docker-compose.yml Normal file
View File

@@ -0,0 +1,29 @@
version: "3.9"
services:
web:
build:
context: ..
dockerfile: docker/Dockerfile
container_name: ansible-webui
restart: unless-stopped
ports:
- "8000:8000"
environment:
DATA_ROOT: /opt/ansible-ui
PLAYBOOK_DIR: /opt/ansible/playbooks
INVENTORY_DIR: /opt/ansible/inventories
SSH_KEY_DIR: /opt/ansible/ssh-keys
DB_PATH: /var/lib/ansible_ui/ansible_ui.db
LOG_DIR: /var/log/ansible_ui
HTPASSWD_PATH: /opt/ansible-ui/.htpasswd
volumes:
- ../app:/opt/ansible-ui/app:ro
- ../data/playbooks:/opt/ansible/playbooks
- ../data/inventories:/opt/ansible/inventories
- ../data/ssh-keys:/opt/ansible/ssh-keys
- ../data/ansible_ui.db:/var/lib/ansible_ui/ansible_ui.db
- ../data/.htpasswd:/opt/ansible-ui/.htpasswd:ro
- ../logs:/var/log/ansible_ui
tty: true
stdin_open: false