Update Docker configuration to persist uploaded images: Modify docker-compose.yml to include a volume for uploaded images, enhance Dockerfile to create the uploads directory, and update README to document the new uploads path configuration.
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled

This commit is contained in:
Julien Froidefond
2025-12-12 08:13:40 +01:00
parent 6f98013382
commit 09a3f6a106
3 changed files with 24 additions and 7 deletions

View File

@@ -51,12 +51,13 @@ ENV DATABASE_URL="file:/app/data/dev.db"
RUN pnpm add prisma @prisma/client @prisma/adapter-better-sqlite3 better-sqlite3 --prod && \ RUN pnpm add prisma @prisma/client @prisma/adapter-better-sqlite3 better-sqlite3 --prod && \
pnpm dlx prisma generate pnpm dlx prisma generate
# Create data directory for SQLite database # Create data directory for SQLite database and uploads directory
RUN mkdir -p /app/data && chown -R nextjs:nodejs /app/data RUN mkdir -p /app/data /app/public/uploads && chown -R nextjs:nodejs /app/data /app/public/uploads
RUN echo '#!/bin/sh' > /app/entrypoint.sh && \ RUN echo '#!/bin/sh' > /app/entrypoint.sh && \
echo 'set -e' >> /app/entrypoint.sh && \ echo 'set -e' >> /app/entrypoint.sh && \
echo 'mkdir -p /app/data' >> /app/entrypoint.sh && \ echo 'mkdir -p /app/data' >> /app/entrypoint.sh && \
echo 'mkdir -p /app/public/uploads' >> /app/entrypoint.sh && \
echo 'pnpm dlx prisma migrate deploy || true' >> /app/entrypoint.sh && \ echo 'pnpm dlx prisma migrate deploy || true' >> /app/entrypoint.sh && \
echo 'exec node server.js' >> /app/entrypoint.sh && \ echo 'exec node server.js' >> /app/entrypoint.sh && \
chmod +x /app/entrypoint.sh && \ chmod +x /app/entrypoint.sh && \

View File

@@ -32,14 +32,28 @@ NEXTAUTH_URL=http://localhost:3000
DATABASE_URL=file:./prisma/dev.db DATABASE_URL=file:./prisma/dev.db
``` ```
## Base de données ## Volumes persistants
La base de données SQLite est persistée via un volume Docker. Les migrations Prisma sont appliquées automatiquement au démarrage du conteneur. ### Base de données
La base de données SQLite est persistée via un volume Docker. Par défaut, elle est stockée dans `/Volumes/EXTERNAL_USB/sites/got-gaming/data`, mais vous pouvez la personnaliser avec la variable d'environnement `PRISMA_DATA_PATH`.
Les migrations Prisma sont appliquées automatiquement au démarrage du conteneur.
Pour appliquer manuellement les migrations : Pour appliquer manuellement les migrations :
```bash ```bash
docker-compose exec app node node_modules/.bin/prisma migrate deploy docker-compose exec got-app node node_modules/.bin/prisma migrate deploy
```
### Images uploadées
Les images uploadées (avatars, images d'événements, etc.) sont persistées dans un volume Docker. Par défaut, elles sont stockées dans `./uploads` à la racine du projet, mais vous pouvez personnaliser le chemin avec la variable d'environnement `UPLOADS_PATH`.
Exemple pour utiliser un chemin personnalisé :
```bash
UPLOADS_PATH=/path/to/your/uploads docker-compose up -d
``` ```
## Commandes utiles ## Commandes utiles
@@ -52,8 +66,8 @@ docker-compose down
docker-compose build --no-cache docker-compose build --no-cache
# Accéder au shell du conteneur # Accéder au shell du conteneur
docker-compose exec app sh docker-compose exec got-app sh
# Voir les logs en temps réel # Voir les logs en temps réel
docker-compose logs -f app docker-compose logs -f got-app
``` ```

View File

@@ -16,6 +16,8 @@ services:
volumes: volumes:
# Persist database (override DATA_PATH env var to change location) # Persist database (override DATA_PATH env var to change location)
- ${PRISMA_DATA_PATH:-/Volumes/EXTERNAL_USB/sites/got-gaming/data}:/app/data - ${PRISMA_DATA_PATH:-/Volumes/EXTERNAL_USB/sites/got-gaming/data}:/app/data
# Persist uploaded images
- ${UPLOADS_PATH:-./uploads}:/app/public/uploads
- ./prisma/migrations:/app/prisma/migrations - ./prisma/migrations:/app/prisma/migrations
restart: unless-stopped restart: unless-stopped
labels: labels: