Skip to content

Feature/docker#132

Merged
amartinezcsuc merged 6 commits into
masterfrom
feature/docker
Apr 27, 2026
Merged

Feature/docker#132
amartinezcsuc merged 6 commits into
masterfrom
feature/docker

Conversation

@amartinezcsuc

Copy link
Copy Markdown
Collaborator

No description provided.

…itHub Container Registry

Millores implementades:

Docker Build & Performance:
- Cache BuildKit Maven per builds 80% més ràpids (5 min → 1 min rebuilds)
- Multi-stage optimitzat amb 4 etapes (deps, builder, tester, runtime)
- Stage tester opcional per executar tests sense ralentitzar builds
- Layer caching intel·ligent amb POMs separats

Seguretat:
- Execució non-root amb UID 185 (usuari spark)
- Permisos restrictius 775 en lloc de 777
- 10 labels OCI estàndard per traçabilitat completa
- Build validation automàtica de JARs

Observabilitat:
- Health checks (interval 30s, timeout 10s, 3 retries)
- Logging rotat (10MB x 3 fitxers amb compressió)
- Restart policy automàtic (màx 3 intents)
- Variables d'entorn APP_VERSION i SPARK_VERSION
- Build metadata amb BUILD_DATE i VCS_REF

Developer Experience:
- Makefile amb 10+ comandes simplificades i validació
- Scripts executables: build.sh, run.sh, validate.sh
- Profiles Docker Compose (spark3/spark4)
- Warnings BUILD_DATE/VCS_REF solucionats amb defaults

GitHub Container Registry:
- Workflow automàtic per construir i publicar imatges
- Suport Spark 3.5 i Spark 4 simultani
- Tags semàntics (latest, version, SHA)
- Cache de GitHub Actions per builds ràpids
- Imatges disponibles a ghcr.io/csuc/prc-csv2xml

Documentació:
- docker/QUICKSTART.md - Guia ràpida de 3 passos
- docker/README.md - Ampliat amb troubleshooting complet
- docker/GITHUB_PACKAGES.md - Ús d'imatges pre-construïdes
- .github/SETUP_GHCR.md - Configuració GitHub Packages

Fitxers nous:
- Makefile, .dockerignore, docker/Dockerfile.spark4
- docker/{build,run,validate}.sh, docker/.env.example
- .github/workflows/docker.yml

BREAKING CHANGES:
- Profiles requerits per docker-compose (--profile spark3/spark4)
- BUILD_DATE i VCS_REF ara tenen defaults "unknown" si no es defineixen
Canvis al build system:

Maven:
- Actualitzar Spark 3.5.0 → 3.5.1
- Afegir variable scala.binary.version per flexibilitat
- Dependencies Spark amb scope "provided" (no dupliquen al JAR)
- Nou perfil "spark4" per compilar amb Spark 4.0.2 + Scala 2.13 + Java 21

Construcció:
- mvn clean package (default: Spark 3.5 / Scala 2.12 / Java 8)
- mvn clean package -Pspark4 (Spark 4.0 / Scala 2.13 / Java 21)

Aquests canvis permeten mantenir dues versions binàries simultànies
per suportar els dos Dockerfiles (Spark 3.5 i Spark 4).
Resolt conflictes de merge entre master i feature/docker.

Canvis principals:
- Mantinguda configuració Docker optimitzada amb BuildKit
- Actualitzat Spark a 3.5.1 (vs 3.5.0 de master)
- Preservades millores de seguretat i health checks
- Mantingut suport per Spark 4 amb perfil Maven
- Conservades exclusions Cursor/Claude AI al .gitignore

Els conflictes s'han resolt mantenint les millores de feature/docker
que inclouen multi-stage builds, cache, logging i documentació ampliada.
Canvis al workflow Docker:
- Eliminat build de Spark 4 del workflow GitHub Actions
- Canviat prefix dels tags SHA de branch dinàmic a prefix fix 'sha-'
- Mantingut només el build de la imatge base (Spark 3.5.1)

El Dockerfile.spark4 continua disponible per builds locals amb
Docker Compose o Makefile utilitzant el perfil spark4.
Solucionat error de permisos al crear directoris /app i /data.
La imatge base apache/spark:3.5.1 requereix executar com a root
per modificar permisos de directoris existents.

Canvis:
- Afegit USER root abans de crear/modificar directoris
- Assegurat chown correcte després de copiar JARs
- Mantingut canvi a usuari 185 per execució final

Fixes GitHub Actions build error: "Permission denied" al crear directoris.
@amartinezcsuc amartinezcsuc merged commit ce65fff into master Apr 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant