diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..be368f3b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +FROM maven:3.8.4-openjdk-17 as maven + +# copy source code and POM + +WORKDIR /usr/src/morph-xr2rml + +COPY morph-base morph-base +COPY morph-core morph-core +COPY morph-xr2rml-dist morph-xr2rml-dist +COPY morph-xr2rml-lang morph-xr2rml-lang +COPY morph-xr2rml-mongo morph-xr2rml-mongo +COPY morph-xr2rml-rdb morph-xr2rml-rdb +COPY pom.xml pom.xml + +RUN mvn clean install + +# find the fat JAR file and copy it to a fixed location +RUN JAR_FILE=$(ls morph-xr2rml-dist/target/*jar-with-dependencies.jar) && \ + cp "$JAR_FILE" morph-xr2rml-dist/target/dist.jar + +# ================================================================================================== + +FROM openjdk:11-jdk-bullseye + +RUN apt-get update -y && \ + apt-get install -y && \ + rm -rf /var/lib/apt/lists/* + +ENV XR2RML="/morph-xr2rml" +RUN mkdir -p $XR2RML +WORKDIR "$XR2RML" + +# copy the JAR file from the build stage +COPY --from=maven /usr/src/morph-xr2rml/morph-xr2rml-dist/target/dist.jar "$XR2RML" + +ENV CONFIG="$XR2RML/config" +ENV OUTPUT="$XR2RML/output" +ENV LOG="$XR2RML/log" +RUN mkdir -p "$CONFIG" "$OUTPUT" "$LOG" + +# Morph-xR2RML is not run at container startup, only when the run_xr2rml.sh script is run from outside. +# So instead just use sleep so that the container never kicks out. +CMD ["sleep", "infinity"] diff --git a/docker/docker-compose.yml b/docker-compose.mongo.yml similarity index 57% rename from docker/docker-compose.yml rename to docker-compose.mongo.yml index ae83c9b0..7cd60864 100644 --- a/docker/docker-compose.yml +++ b/docker-compose.mongo.yml @@ -1,27 +1,17 @@ version: '3.2' -services: +networks: + xr2rml-net: + driver: bridge +services: morph-xr2rml: - image: frmichel/morph-xr2rml:v1.3.2 - container_name: morph-xr2rml networks: - xr2rml-net - volumes: - - "./xr2rml_config:/xr2rml_config" - - "./xr2rml_output:/xr2rml_output" - - "./log:/log" - mongo-xr2rml: image: mongo:4.4.6 - container_name: mongo-xr2rml networks: - xr2rml-net volumes: - "./mongo_db:/data/db" - "./mongo_tools:/mongo_tools" - "./mongo_import:/mongo_import" - -networks: - xr2rml-net: - driver: bridge - diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..a47523f5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3.2' +services: + morph-xr2rml: + build: . + volumes: + - "./xr2rml_config:/xr2rml_config" + - "./xr2rml_output:/xr2rml_output" + - "./log:/log" diff --git a/docker/build/morph-xr2rml/Dockerfile b/docker/build/morph-xr2rml/Dockerfile deleted file mode 100644 index a248cf10..00000000 --- a/docker/build/morph-xr2rml/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM openjdk:11-jdk-bullseye - -RUN apt-get update -y - -ENV XR2RML="/morph-xr2rml" -RUN mkdir -p $XR2RML -WORKDIR "$XR2RML" - -COPY morph-xr2rml-dist-1.3.2-20211126.142114-3-jar-with-dependencies.jar $XR2RML - -ENV CONFIG="$XR2RML/config" -RUN mkdir -p $CONFIG - -ENV OUTPUT="$XR2RML/output" -RUN mkdir -p $OUTPUT - -ENV LOG="$XR2RML/log" -RUN mkdir -p $LOG - -# Morph-xR2RML is not run at container startup, only when the run_xr2rml.sh script is run from outside. -# So instead just use sleep so that the container never kicks out. -CMD ["sleep", "infinity"]