added docker

This commit is contained in:
Rene Kaßeböhmer
2026-07-23 09:18:53 +02:00
parent 53a78f5d80
commit f9fb067383
3 changed files with 95 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
.git
.gitignore
__pycache__/
*.pyc
*.pyo
*.pyd
*.log
.venv/
venv/
.env
sync_config.json
sync_mapping.json
tests/
README.md
LICENSE
+22
View File
@@ -0,0 +1,22 @@
FROM --platform=$TARGETPLATFORM python:3.12-slim-bookworm
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1
WORKDIR /app
# Install Python dependencies first to leverage layer caching.
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Copy application source.
COPY jira_jotty_sync.py ./
COPY sync_config.json.template ./
# Run as non-root for better container security.
RUN useradd --create-home --uid 10001 appuser && chown -R appuser:appuser /app
USER appuser
ENTRYPOINT ["python", "jira_jotty_sync.py"]
CMD ["--direction", "both"]
+58
View File
@@ -59,6 +59,64 @@ python jira_jotty_sync.py --direction=jotty-to-jira
python jira_jotty_sync.py --direction=both
```
## Docker (Raspberry Pi 5 / ARM64)
### Build for ARM64
On Raspberry Pi 5 (native ARM64):
```bash
docker build -t jotty-jira-sync:arm64 .
```
From another machine using buildx:
```bash
docker buildx build \
--platform linux/arm64 \
-t jotty-jira-sync:arm64 \
.
```
### Prepare runtime config files
Create local config files in the project folder:
```bash
cp sync_config.json.template sync_config.json
# Optional if you prefer env-based auth instead of putting secrets in JSON
touch .env
```
### Run container
The container runs `python jira_jotty_sync.py --direction both` by default.
```bash
docker run --rm \
--name jotty-jira-sync \
-v "$(pwd)/sync_config.json:/app/sync_config.json:ro" \
-v "$(pwd)/.env:/app/.env:ro" \
-v "$(pwd)/sync_mapping.json:/app/sync_mapping.json" \
jotty-jira-sync:arm64
```
Run a one-way sync instead:
```bash
docker run --rm \
-v "$(pwd)/sync_config.json:/app/sync_config.json:ro" \
-v "$(pwd)/.env:/app/.env:ro" \
-v "$(pwd)/sync_mapping.json:/app/sync_mapping.json" \
jotty-jira-sync:arm64 --direction jira-to-jotty
```
Notes:
- Keep `.env` and `sync_config.json` private because they contain credentials.
- `sync_mapping.json` is mounted so state persists across container runs.
- If you do not use `.env`, remove that `-v` mount and rely on `sync_config.json`.
### CLI overrides
Override config values from the command line: