|
1 | 1 | # docker-cron-image |
2 | | -Docker inguruneetan cron lanak exekutatzeko irudia. |
| 2 | + |
| 3 | +Docker irudi arin eta moldagarria, programatutako atazak (cron jobs) edukiontzi barruan exekutatzeko diseinatua. |
| 4 | + |
| 5 | +Irudi hau **Alpine Linux**-en oinarrituta dago eta honako tresna hauek dakartza aurrez instalatuta, automatizazio script-ak errazteko: |
| 6 | +* `cronie` (Cron kudeatzailea) |
| 7 | +* `bash` |
| 8 | +* `curl` |
| 9 | +* `docker-cli` (Docker barruan beste Docker edukiontzi batzuk kudeatu ahal izateko) |
| 10 | + |
| 11 | +Besterik gabe exekutatzen bada, irudiak abisu-mezu bat bistaratuko du logetan minuturo, erabiltzaileari bere konfigurazio propioa muntatu behar duela gogorarazteko. |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +## Erabilera gida |
| 16 | + |
| 17 | +Irudi hau GitHub Container Registry-tik (GHCR) deskargatu dezakezu. |
| 18 | + |
| 19 | +### Bertsioen Nomenklatura (Tags) |
| 20 | + |
| 21 | +Irudiak honako *tag* egitura hau jarraitzen du bertsioak kudeatzeko: |
| 22 | + |
| 23 | +* **`latest`**: Uneko bertsio egonkor eta berriena. |
| 24 | +* **`YYYYMMDD-sha`** (Adibidez: `20251126-a1b2c3d`): Data eta commit-aren hash-a barne hartzen dituen bertsio finkoa. Honek bermatzen du beti irudi berbera exekutatuko dela, nahiz eta `latest` eguneratu. |
| 25 | + |
| 26 | +### Docker Compose Adibidea |
| 27 | + |
| 28 | +Zure cron lanak exekutatzeko, **zure `crontab` fitxategia muntatu behar duzu** edukiontziaren `/etc/crontabs/root` bidean. |
| 29 | + |
| 30 | +Hona hemen `docker-compose.yml` fitxategi baten adibidea: |
| 31 | + |
| 32 | +```yaml |
| 33 | +version: '3.8' |
| 34 | + |
| 35 | +services: |
| 36 | + cron-worker: |
| 37 | + image: ghcr.io/codesyntax/docker-cron-image:latest |
| 38 | + container_name: nire-cron-lana |
| 39 | + restart: unless-stopped |
| 40 | + volumes: |
| 41 | + # Zure cron lanak dituen fitxategia muntatu (overwrite) |
| 42 | + - ./nire-crontab.txt:/etc/crontabs/root:ro |
| 43 | + |
| 44 | + # Docker socket-a muntatu (Docker komandoak erabili ahal izateko) |
| 45 | + - /var/run/docker.sock:/var/run/docker.sock |
| 46 | +``` |
| 47 | +
|
| 48 | +### ⚠️ Ohar garrantzitsuak konfigurazioari buruz |
| 49 | +
|
| 50 | +Zure `crontab.txt` fitxategia sortzean, kontuan izan hiru puntu hauek: |
| 51 | + |
| 52 | +1. **Irteera desbideratu:** Docker-ek logak irakurri ahal izateko, komandoen irteera `/proc/1/fd/1`-era bideratu behar da. |
| 53 | +2. **Lerro hutsa:** Fitxategiaren amaieran beti lerro huts bat utzi (bestela cron-ek ez du irakurriko). |
| 54 | +3. **Docker Socket-a:** `docker-compose` fitxategian `/var/run/docker.sock` muntatzea ezinbestekoa da zure cron lanek `docker` komandoak exekutatu behar badituzte (adibidez: `docker restart nginx`). Honek edukiontziari baimena ematen dio "Host" makinako Docker motorra kontrolatzeko. |
| 55 | + |
| 56 | +Adibidea (`crontab.txt`): |
| 57 | +```text |
| 58 | +# Adibidea: Nginx edukiontzia berrabiarazi egunero 03:00etan |
| 59 | +0 3 * * * docker restart nire-nginx > /proc/1/fd/1 2>&1 |
| 60 | +``` |
| 61 | + |
| 62 | +## Garapen gida |
| 63 | + |
| 64 | +Proiektu honek **CI/CD** (Continuous Integration / Continuous Deployment) sistema bat du integratuta GitHub Actions erabiliz. |
| 65 | + |
| 66 | +### GitHub Actions Workflow-a |
| 67 | + |
| 68 | +Errepositorioan aldaketak egiten diren bakoitzean, `.github/workflows/docker-publish.yml` fitxategian definitutako prozesua abiarazten da. |
| 69 | + |
| 70 | +Workflow honen urratsak honako hauek dira: |
| 71 | + |
| 72 | +1. **Aktibazioa:** `main` adarrera *push* bat egiten denean aktibatzen da automatikoki. |
| 73 | +2. **Build:** Docker irudia eraikitzen du `Dockerfile` erabiliz. |
| 74 | +3. **Tagging:** Irudiari bi etiketa jartzen dizkio: |
| 75 | + * `latest` |
| 76 | + * Data eta commit hash-a daraman etiketa bakarra. |
| 77 | +4. **Publish:** Irudia **GitHub Container Registry (GHCR)**-ra igotzen du. |
| 78 | + |
| 79 | +Ez da eskuzko `docker push` komandorik behar; kodea igotzearekin batera irudiaren bertsio berria eskuragarri egongo da minutu gutxiren buruan. |
0 commit comments