added docker
This commit is contained in:
@@ -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
@@ -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"]
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user