Skip to content

Commit 6a8a246

Browse files
fix docker (#131)
1 parent 3a04ca0 commit 6a8a246

File tree

13 files changed

+478
-113
lines changed

13 files changed

+478
-113
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,4 +220,6 @@ release.properties
220220
dependency-reduced-pom.xml
221221
buildNumber.properties
222222
.mvn/timing.properties
223-
.mvn/wrapper/maven-wrapper.jar
223+
.mvn/wrapper/maven-wrapper.jar
224+
225+
data/*

README.md

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,42 @@
11
# PRC-CERIF [![Build Status](https://github.com/CSUC/PRC-CSV2XML/actions/workflows/main.yml/badge.svg)](https://github.com/CSUC/PRC-CSV2XML/actions/workflows/main.yml)
22

3-
## Resources
4-
* [Release Notes](../../releases)
5-
* [Wiki](../../wiki/Home)
3+
## Descripció
4+
Aquesta aplicació converteix dades de recerca en format CSV a XML seguint l'estàndard CERIF (Common European Research Information Format). L'aplicació està dissenyada per processar dades de recerca de la Universitat Politècnica de Catalunya (UPC) i generar fitxers XML compatibles amb el sistema euroCRIS.
65

7-
## Build
6+
## Característiques
7+
- Conversió de dades de recerca a format CERIF XML
8+
- Suport per a investigadors, departaments, grups de recerca, projectes i publicacions
9+
- Processament de dades utilitzant Apache Spark
10+
- Generació d'identificadors únics (UUID) per a cada entitat
11+
- Suport per a múltiples idiomes en els metadades
812

9-
```
13+
## Requisits
14+
- Java 8 o superior
15+
- Apache Spark
16+
- Maven 3.x
17+
18+
## Instal·lació
19+
20+
### Des de font
21+
```bash
22+
git clone https://github.com/CSUC/PRC-CSV2XML.git
23+
cd PRC-CSV2XML
1024
sh build.sh
1125
```
1226

13-
## Command line
14-
https://spark.apache.org/docs/latest/submitting-applications.html
27+
### Des de Docker
28+
```bash
29+
docker pull csuc/prc-cerif:latest
1530
```
16-
spark-submit --master "local[*]" --class org.csuc.cli.Cerif --packages info.picocli:picocli:4.7.6,com.crealytics:spark-excel_2.12:3.5.1_0.20.4,com.typesafe:config:1.4.3 --jars euroCRIS-cerif-definitions-1.6.2.jar prc-cerif-${version}.jar args
31+
32+
## Ús
33+
34+
### Línia de comandes
35+
```bash
36+
spark-submit --master "local[*]" --class org.csuc.cli.Cerif --packages info.picocli:picocli:4.7.6,com.crealytics:spark-excel_2.12:3.5.1_0.20.4,com.typesafe:config:1.4.3 --jars euroCRIS-cerif-definitions-${version}.jar prc-cerif-${version}.jar args
1737
```
38+
39+
### Opcions
1840
```
1941
Usage: prc-cerif [-fhV] -i=<PATH> [-o=<PATH>] -r=<STRING>
2042
-f, --formatted formatted output file (default: false)
@@ -24,3 +46,26 @@ Usage: prc-cerif [-fhV] -i=<PATH> [-o=<PATH>] -r=<STRING>
2446
-r, --ruct=<STRING> ruct code (https://www.educacion.gob.es/ruct/home)
2547
-V, --version Print version information and exit.
2648
```
49+
50+
### Docker
51+
```bash
52+
docker run -v /path/to/data:/opt/spark/work-dir csuc/prc-cerif:latest -i input.xlsx -r RUCT_CODE -o output.xml
53+
```
54+
55+
## Estructura del projecte
56+
- `euroCRIS-cerif-definitions`: Definicions XSD i classes generades per al format CERIF
57+
- `transformation`: Codi font de l'aplicació principal
58+
- `src/main/java/org/csuc/cli`: Classes de línia de comandes
59+
- `src/main/java/org/csuc/marshal`: Classes per a la conversió de dades
60+
- `src/main/java/org/csuc/typesafe`: Configuracions i semàntica
61+
- `src/main/resources`: Fitxers de configuració
62+
63+
## Recursos
64+
* [Release Notes](../../releases)
65+
* [Wiki](../../wiki/Home)
66+
67+
## Llicència
68+
Aquest projecte està llicenciat sota la llicència MIT - veure el fitxer [LICENSE](LICENSE) per més detalls.
69+
70+
## Contacte
71+
Albert Martínez <albert.martinez@csuc.cat>

docker/Dockerfile

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,49 @@
1-
FROM apache/spark:latest
1+
# Stage 1: Compilació
2+
FROM maven:3.8-openjdk-8-slim AS builder
3+
4+
ENV VERSION="2.4.19"
5+
6+
LABEL maintainer="Albert Martínez <albert.martinez@csuc.cat>"
7+
LABEL version="$VERSION"
8+
LABEL description="PRC-CSV2XML: Conversor de CSV/Excel a XML CERIF"
9+
10+
# Configurar repositori Maven central
11+
RUN mkdir -p /root/.m2 && \
12+
echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"><mirrors><mirror><id>central</id><name>Maven Central</name><url>https://repo.maven.apache.org/maven2</url><mirrorOf>central</mirrorOf></mirror></mirrors></settings>' > /root/.m2/settings.xml
13+
14+
# Copiar el codi font
15+
WORKDIR /app
16+
COPY . .
17+
18+
# Compilar el projecte
19+
RUN mvn clean install -DskipTests
20+
21+
# Stage 2: Execució
22+
FROM bitnami/spark:3.5.1
23+
24+
ENV VERSION="2.4.19"
225

326
LABEL maintainer="Albert Martínez <albert.martinez@csuc.cat>"
27+
LABEL version="$VERSION"
28+
LABEL description="PRC-CSV2XML: Conversor de CSV/Excel a XML CERIF"
429

30+
# Crear directoris necessaris
531
USER root
32+
RUN mkdir -p /app /data
633

7-
ADD https://github.com/CSUC/PRC-CSV2XML/releases/download/2.4.19/euroCRIS-cerif-definitions-1.6.2.jar /opt/spark/work-dir/euroCRIS-cerif-definitions.jar
8-
ADD https://github.com/CSUC/PRC-CSV2XML/releases/download/2.4.19/prc-cerif-2.4.19.jar /opt/spark/work-dir/prc-cerif.jar
9-
COPY run.sh /opt/spark/work-dir
34+
# Copiar els JARs compilats
35+
COPY --from=builder /app/transformation/target/prc-cerif-$VERSION.jar /app/prc-cerif.jar
36+
COPY --from=builder /app/euroCRIS-cerif-definitions/target/euroCRIS-cerif-definitions-$VERSION.jar /app/euroCRIS-cerif-definitions.jar
1037

11-
ENV PATH "${SPARK_HOME}/bin:${PATH}"
38+
# Configurar el directori de treball
39+
WORKDIR /app
1240

13-
CMD ["/bin/bash"]
41+
# Comanda per defecte
42+
ENTRYPOINT ["spark-submit", \
43+
"--master", "local[*]", \
44+
"--driver-memory", "4g", \
45+
"--executor-memory", "4g", \
46+
"--packages", "info.picocli:picocli:4.7.6,com.crealytics:spark-excel_2.12:3.5.1_0.20.4,com.typesafe:config:1.4.3,commons-io:commons-io:2.15.0,commons-codec:commons-codec:1.16.0,org.apache.commons:commons-lang3:3.13.0,org.apache.commons:commons-text:1.10.0,org.slf4j:slf4j-api:2.0.11,org.apache.commons:commons-compress:1.25.0", \
47+
"--jars", "/app/euroCRIS-cerif-definitions.jar", \
48+
"--class", "org.csuc.cli.Cerif", \
49+
"/app/prc-cerif.jar"]

docker/README.md

Lines changed: 110 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,118 @@
1-
# Docker
1+
# PRC-CSV2XML Docker
22

3-
## Run
3+
Aquest directori conté la configuració Docker per executar el convertidor de CSV/Excel a XML CERIF.
44

5-
manage volumes
6-
```
7-
export SOURCE_FOLDER={source}
8-
export TARGET_FOLDER={target}
9-
```
10-
```
11-
docker-compose -f docker/docker-compose.yml run -d prc-cerif
12-
```
5+
## Requisits
136

14-
## Build
15-
```
16-
docker-compose -f docker/docker-compose.yml build
17-
```
7+
- Docker
8+
- Docker Compose
9+
- Mínim 4GB de RAM disponible
1810

19-
## Usage
11+
## Estructura
2012

2113
```
22-
docker exec -it {container_id} bash
14+
docker/
15+
├── Dockerfile # Configuració multi-stage per compilar i executar
16+
├── docker-compose.yml # Configuració del servei
17+
└── data/ # Directori per als fitxers d'entrada/sortida
2318
```
2419

25-
```
26-
sh run.sh --help
27-
28-
Usage: prc-cerif [-fhV] -i=<PATH> [-o=<PATH>] -r=<STRING>
29-
-f, --formatted formatted output file (default: false)
30-
-h, --help Show this help message and exit.
31-
-i, --input=<PATH> data file
32-
-o, --output=<PATH> output file (default: /tmp/`ruct`.xml)
33-
-r, --ruct=<STRING> ruct code (https://www.educacion.gob.es/ruct/home)
34-
-V, --version Print version information and exit.
35-
```
20+
## Configuració
21+
22+
El Dockerfile utilitza un procés multi-stage:
23+
1. Stage de compilació: Utilitza Maven per compilar el projecte
24+
2. Stage d'execució: Utilitza Spark per executar l'aplicació
25+
26+
El docker-compose.yml configura:
27+
- Memòria: 4GB per driver i executor
28+
- Volums: Mapeig del directori `data` per fitxers d'entrada/sortida
29+
- Healthcheck: Verifica que Spark estigui executant-se
30+
- Restart: Automàtic en cas d'error
31+
32+
## Ús
33+
34+
1. Preparar els fitxers:
35+
```bash
36+
# Crear el directori data si no existeix
37+
mkdir -p docker/data
38+
39+
# Copiar el fitxer d'entrada
40+
cp ruta/al/fitxer.csv docker/data/entrada.csv
41+
```
42+
43+
2. Construir la imatge:
44+
```bash
45+
sudo docker compose -f docker/docker-compose.yml build
46+
```
47+
48+
3. Executar el convertidor:
49+
```bash
50+
# Forma bàsica
51+
sudo docker compose -f docker/docker-compose.yml run --rm prc-cerif \
52+
--input /data/entrada.csv \
53+
--output /data/sortida.xml \
54+
--ruct RUCT_CODE
55+
56+
# Amb sortida formatada
57+
sudo docker compose -f docker/docker-compose.yml run --rm prc-cerif \
58+
--input /data/entrada.csv \
59+
--output /data/sortida.xml \
60+
--ruct RUCT_CODE \
61+
--formatted
62+
63+
# Especificant un fitxer Excel
64+
sudo docker compose -f docker/docker-compose.yml run --rm prc-cerif \
65+
--input /data/entrada.xlsx \
66+
--output /data/sortida.xml \
67+
--ruct RUCT_CODE
68+
```
69+
70+
4. El fitxer XML generat es trobarà a `docker/data/sortida.xml`
71+
72+
## Opcions disponibles
73+
74+
- `--input`: Ruta al fitxer d'entrada (CSV/Excel)
75+
- `--output`: Ruta al fitxer de sortida (XML)
76+
- `--ruct`: Codi RUCT de la institució
77+
- `--formatted`: Genera un fitxer XML formatat (més llegible)
78+
- `--help`: Mostra l'ajuda
79+
80+
## Solució de problemes
81+
82+
1. Error de memòria:
83+
- Augmentar la memòria a `docker-compose.yml`:
84+
```yaml
85+
environment:
86+
- SPARK_OPTS=--driver-java-options=-Xmx8g
87+
- JAVA_OPTS=-Xmx8g
88+
```
89+
90+
2. Error de dependències:
91+
- Verificar la connexió a Internet
92+
- Netejar la cache de Docker:
93+
```bash
94+
sudo docker system prune -a
95+
```
96+
97+
3. Error d'accés als fitxers:
98+
- Verificar els permisos del directori `data`
99+
- Assegurar que el fitxer d'entrada existeix
100+
- Comprovar que el format del fitxer és correcte (CSV o Excel)
101+
102+
4. Error de codi RUCT:
103+
- Verificar que el codi RUCT és vàlid
104+
- Consultar la llista de codis RUCT a: https://www.educacion.gob.es/ruct/home
105+
106+
## Notes
107+
108+
- La imatge utilitza Spark 3.5.1
109+
- Les dependències es compilen durant la construcció de la imatge
110+
- Els fitxers d'entrada/sortida es gestionen a través del directori `data`
111+
- La versió actual és 2.4.19
112+
- Els fitxers JAR s'instal·len amb noms genèrics:
113+
- `prc-cerif.jar` (versió ${VERSION})
114+
- `euroCRIS-cerif-definitions.jar` (versió ${VERSION})
115+
116+
## Contacte
117+
118+
Albert Martínez <albert.martinez@csuc.cat>

docker/docker-compose.yml

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
version: '3.8'
21
services:
32
prc-cerif:
43
build:
5-
context: .
6-
dockerfile: Dockerfile
7-
image: 'prc/prc-cerif:2.4.19'
4+
context: ..
5+
dockerfile: docker/Dockerfile
6+
image: prc-cerif:latest
87
container_name: prc-cerif
9-
hostname: prc-cerif
8+
environment:
9+
- SPARK_OPTS=--driver-java-options=-Xmx4g
10+
- JAVA_OPTS=-Xmx4g
1011
volumes:
11-
- ${SOURCE_FOLDER}:${TARGET_FOLDER}:rw
12+
- ../data:/data
13+
healthcheck:
14+
test: ["CMD", "ps", "aux", "|", "grep", "spark"]
15+
interval: 30s
16+
timeout: 10s
17+
retries: 3
18+
restart: unless-stopped

docker/run.sh

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)