CI : publication automatique de l'image Docker sur GHCR

- .github/workflows/docker-publish.yml : build + push de ghcr.io/r0m1k3/loki
  (linux/amd64, tags latest + sha, cache GHA) à chaque push sur main
- docker-compose.unraid.yml : utilise l'image préconstruite (plus de build/git
  sur Unraid, simple pull)
- README : instructions Unraid mises à jour (image GHCR, visibilité du package)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
This commit is contained in:
MichaelandClaude Opus 4.8 committed 2026-06-29 21:36:29 +00:00
1 parent 8bb55c7ea7
commit a35ec98ebc
3 files changed
+74 -18

No files matched your search

+47
View File
@@ -0,0 +1,47 @@
name: Publier l'image Docker (GHCR)
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
packages: write
jobs:
build-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Buildx
uses: docker/setup-buildx-action@v3
- name: Connexion à GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Métadonnées (tags / labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=raw,value=latest
type=sha,format=short
- name: Build & push
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+10 -4
View File
@@ -42,12 +42,14 @@ Application disponible sur http://localhost:8080
## Installation sur Unraid ## Installation sur Unraid
Un compose prêt à l'emploi est fourni : [`docker-compose.unraid.yml`](docker-compose.unraid.yml). L'image est **construite et publiée automatiquement par GitHub Actions** sur GHCR
(`ghcr.io/r0m1k3/loki:latest`) à chaque push sur `main`. Aucun build ni `git`
n'est nécessaire sur Unraid — un simple `pull`. Compose prêt à l'emploi :
[`docker-compose.unraid.yml`](docker-compose.unraid.yml).
1. Dans le terminal Unraid, prépare les dossiers et le code source : 1. Dans le terminal Unraid, crée les dossiers de données :
```bash ```bash
mkdir -p /mnt/user/appdata/loki/workspace /mnt/user/appdata/loki/data mkdir -p /mnt/user/appdata/loki/workspace /mnt/user/appdata/loki/data
git clone https://github.com/R0m1k3/Loki.git /mnt/user/appdata/loki/repo
``` ```
2. Installe le plugin **Compose Manager** (Apps), crée une nouvelle stack, et 2. Installe le plugin **Compose Manager** (Apps), crée une nouvelle stack, et
colle le contenu de `docker-compose.unraid.yml`. colle le contenu de `docker-compose.unraid.yml`.
@@ -55,9 +57,13 @@ Un compose prêt à l'emploi est fourni : [`docker-compose.unraid.yml`](docker-c
conteneur Ollama, p. ex. `http://192.168.1.10:11434`. conteneur Ollama, p. ex. `http://192.168.1.10:11434`.
4. **Compose Up**. Loki est accessible sur `http://<ip-unraid>:8080`. 4. **Compose Up**. Loki est accessible sur `http://<ip-unraid>:8080`.
> La première publication de l'image prend quelques minutes (le temps que le
> workflow GitHub se termine). Si l'image est privée, rends le package **public**
> une fois (GitHub → Packages → `loki` → Package settings → Change visibility).
>
> Les modèles déjà présents dans ton Ollama sont **détectés automatiquement** ; > Les modèles déjà présents dans ton Ollama sont **détectés automatiquement** ;
> tu peux en télécharger d'autres depuis l'onglet Configuration. > tu peux en télécharger d'autres depuis l'onglet Configuration.
> Mise à jour : `cd /mnt/user/appdata/loki/repo && git pull`, puis Compose Up (rebuild). > Mise à jour : Compose Down/Up (avec pull), ou `docker compose pull`.
## Développement (sans Docker) ## Développement (sans Docker)
+17 -14
View File
@@ -1,23 +1,26 @@
# ─────────────────────────────────────────────────────────────────────────── # ───────────────────────────────────────────────────────────────────────────
# Loki — docker-compose pour Unraid # Loki — docker-compose pour Unraid (image préconstruite par GitHub)
# #
# PRÉREQUIS (une seule fois, via le terminal Unraid) : # Aucun build ni git nécessaire sur Unraid : l'image est publiée automatiquement
# mkdir -p /mnt/user/appdata/loki # sur GHCR par GitHub Actions à chaque push sur main.
# git clone https://github.com/R0m1k3/Loki.git /mnt/user/appdata/loki/repo
# mkdir -p /mnt/user/appdata/loki/workspace /mnt/user/appdata/loki/data
# #
# Puis colle ce fichier dans le plugin « Compose Manager » (nouvelle stack) # MISE EN PLACE :
# et lance « Compose Up ». Pour mettre à jour plus tard : # 1) Crée les dossiers de données (terminal Unraid) :
# cd /mnt/user/appdata/loki/repo && git pull (puis Compose Up --build) # mkdir -p /mnt/user/appdata/loki/workspace /mnt/user/appdata/loki/data
# 2) Plugin « Compose Manager » -> nouvelle stack -> colle ce fichier.
# 3) Adapte OLLAMA_HOST avec l'IP de ton serveur Unraid (Ollama sur :11434).
# 4) Compose Up. Interface : http://<ip-unraid>:8080
# #
# IMPORTANT : remplace l'IP dans OLLAMA_HOST par celle de ton serveur Unraid # Mise à jour : Compose Down puis Up (l'option « pull image » récupère la
# (là où tourne ton conteneur Ollama, port 11434). # dernière version), ou « docker compose pull » avant Up.
#
# NB : si l'image ghcr.io/r0m1k3/loki est privée, rends-la publique une fois
# (GitHub -> Packages -> loki -> Package settings -> Change visibility),
# ou connecte Unraid à GHCR avec un token.
# ─────────────────────────────────────────────────────────────────────────── # ───────────────────────────────────────────────────────────────────────────
services: services:
loki: loki:
build: image: ghcr.io/r0m1k3/loki:latest
context: /mnt/user/appdata/loki/repo
image: loki:latest
container_name: loki container_name: loki
ports: ports:
- "8080:8080" - "8080:8080"
@@ -34,7 +37,7 @@ services:
- /mnt/user/appdata/loki/workspace:/workspace - /mnt/user/appdata/loki/workspace:/workspace
- /mnt/user/appdata/loki/data:/data - /mnt/user/appdata/loki/data:/data
extra_hosts: extra_hosts:
# Permet aussi d'utiliser OLLAMA_HOST=http://host.docker.internal:11434 # Permet aussi OLLAMA_HOST=http://host.docker.internal:11434
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
healthcheck: healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:8080/api/health"] test: ["CMD", "curl", "-fsS", "http://localhost:8080/api/health"]