AI Implementation feature(1082): Project Scaffold and Docker Packaging (#1)
This commit was merged in pull request #1.
This commit is contained in:
@@ -1,2 +1,50 @@
|
||||
# 10Backward
|
||||
|
||||
Daily Mastodon throwback bot scaffolded with Docker Compose.
|
||||
|
||||
The container runs a cron daemon that invokes the Python entrypoint once per
|
||||
day at the configured `RUN_AT` (Europe/Berlin default). The actual blog
|
||||
clone / post pipeline is intentionally stubbed in this scaffold and is to be
|
||||
implemented in a follow-up job — this repository currently ships:
|
||||
|
||||
- Pinned Python dependency manifest.
|
||||
- `Dockerfile` (python:3.11-slim + cron + git + ca-certificates + tzdata).
|
||||
- `docker-compose.yml` building locally, mounting `.env` read-only and
|
||||
persisting `./data` for the blog clone and `posted.json` state.
|
||||
- `entrypoint.sh` that validates required env vars and fails clearly on
|
||||
startup before launching `cron -f` in the foreground.
|
||||
- Safe `.env.example` with placeholder credentials only.
|
||||
|
||||
## Build & run
|
||||
|
||||
```bash
|
||||
cp .env.example .env # fill in real credentials locally
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
docker compose logs -f bot
|
||||
```
|
||||
|
||||
`./data` is persisted across restarts on the host. The blog clone (added in a
|
||||
follow-up job) will live in `./data/blog/`, and posted-state in
|
||||
`./data/posted.json`.
|
||||
|
||||
## Configuration
|
||||
|
||||
| Variable | Required | Default | Notes |
|
||||
| --- | --- | --- | --- |
|
||||
| `MASTODON_BASE_URL` | yes | — | e.g. `https://mastodon.social` |
|
||||
| `MASTODON_ACCESS_TOKEN` | yes | — | never commit |
|
||||
| `SITE_URL` | yes | — | source blog URL (HTTPS) |
|
||||
| `HASHTAGS` | yes | — | comma-separated, e.g. `#throwback,#10backward` |
|
||||
| `RUN_AT` | yes | `09:00` | `HH:MM` in `TZ` |
|
||||
| `MASTODON_VISIBILITY` | no | `public` | `public`, `unlisted`, `private`, `direct` |
|
||||
| `THROWBACK_PREFIX` | no | `Throwback:` | German-localizable |
|
||||
| `RETRY_COUNT` | no | `3` | post retries |
|
||||
| `TZ` | no | `Europe/Berlin` | any IANA timezone |
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
pip install -r requirements-dev.txt
|
||||
pytest
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user