diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index b7979e589653..d3c00c2b8863 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -180,7 +180,7 @@ jobs:
# Get Metadata for docker_build_test step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-test' image
id: meta_build_test
- uses: docker/metadata-action@v4
+ uses: docker/metadata-action@v5
with:
images: dspace/dspace
tags: ${{ env.IMAGE_TAGS }}
diff --git a/Dockerfile b/Dockerfile
index 9c32ecb50cd4..9d89710fe11c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,7 +8,7 @@
ARG JDK_VERSION=11
# Step 1 - Run Maven Build
-FROM dspace/dspace-dependencies:dspace-7_x as build
+FROM dspace/dspace-dependencies:dspace-7_x AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# The dspace-installer directory will be written to /install
@@ -20,12 +20,15 @@ USER dspace
ADD --chown=dspace . /app/
# Build DSpace (note: this build doesn't include the optional, deprecated "dspace-rest" webapp)
# Copy the dspace-installer directory to /install. Clean up the build to keep the docker image small
-RUN mvn --no-transfer-progress package && \
+# Maven flags here ensure that we skip building test environment and skip all code verification checks.
+# These flags speed up this compilation as much as reasonably possible.
+ENV MAVEN_FLAGS="-P-test-environment -Denforcer.skip=true -Dcheckstyle.skip=true -Dlicense.skip=true -Dxml.skip=true"
+RUN mvn --no-transfer-progress package ${MAVEN_FLAGS} && \
mv /app/dspace/target/${TARGET_DIR}/* /install && \
mvn clean
# Step 2 - Run Ant Deploy
-FROM openjdk:${JDK_VERSION}-slim as ant_build
+FROM eclipse-temurin:${JDK_VERSION} AS ant_build
ARG TARGET_DIR=dspace-installer
# COPY the /install directory from 'build' container to /dspace-src in this container
COPY --from=build /install /dspace-src
diff --git a/Dockerfile.cli b/Dockerfile.cli
index 62e83b79ef02..8a69b32e2dc6 100644
--- a/Dockerfile.cli
+++ b/Dockerfile.cli
@@ -8,7 +8,7 @@
ARG JDK_VERSION=11
# Step 1 - Run Maven Build
-FROM dspace/dspace-dependencies:dspace-7_x as build
+FROM dspace/dspace-dependencies:dspace-7_x AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# The dspace-installer directory will be written to /install
@@ -24,7 +24,7 @@ RUN mvn --no-transfer-progress package && \
mvn clean
# Step 2 - Run Ant Deploy
-FROM openjdk:${JDK_VERSION}-slim as ant_build
+FROM eclipse-temurin:${JDK_VERSION} AS ant_build
ARG TARGET_DIR=dspace-installer
# COPY the /install directory from 'build' container to /dspace-src in this container
COPY --from=build /install /dspace-src
@@ -33,9 +33,9 @@ WORKDIR /dspace-src
ENV ANT_VERSION 1.10.13
ENV ANT_HOME /tmp/ant-$ANT_VERSION
ENV PATH $ANT_HOME/bin:$PATH
-# Need wget to install ant, and unzip for managing AIPs
+# Need wget to install ant
RUN apt-get update \
- && apt-get install -y --no-install-recommends wget unzip \
+ && apt-get install -y --no-install-recommends wget \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
# Download and install 'ant'
@@ -45,10 +45,15 @@ RUN mkdir $ANT_HOME && \
RUN ant init_installation update_configs update_code
# Step 3 - Run jdk
-FROM openjdk:${JDK_VERSION}
+FROM eclipse-temurin:${JDK_VERSION}
# NOTE: DSPACE_INSTALL must align with the "dspace.dir" default configuration.
ENV DSPACE_INSTALL=/dspace
# Copy the /dspace directory from 'ant_build' container to /dspace in this container
COPY --from=ant_build /dspace $DSPACE_INSTALL
# Give java extra memory (1GB)
ENV JAVA_OPTS=-Xmx1000m
+# Install unzip for AIPs
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends unzip \
+ && apt-get purge -y --auto-remove \
+ && rm -rf /var/lib/apt/lists/*
diff --git a/Dockerfile.dependencies b/Dockerfile.dependencies
index a55b323339dc..123206ea5887 100644
--- a/Dockerfile.dependencies
+++ b/Dockerfile.dependencies
@@ -7,7 +7,7 @@
ARG JDK_VERSION=11
# Step 1 - Run Maven Build
-FROM maven:3-openjdk-${JDK_VERSION}-slim as build
+FROM maven:3-eclipse-temurin-${JDK_VERSION} AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# Create the 'dspace' user account & home directory
@@ -15,11 +15,6 @@ RUN useradd dspace \
&& mkdir -p /home/dspace \
&& chown -Rv dspace: /home/dspace
RUN chown -Rv dspace: /app
-# Need git to support buildnumber-maven-plugin, which lets us know what version of DSpace is being run.
-RUN apt-get update \
- && apt-get install -y --no-install-recommends git \
- && apt-get purge -y --auto-remove \
- && rm -rf /var/lib/apt/lists/*
# Switch to dspace user & run below commands as that user
USER dspace
@@ -28,7 +23,10 @@ USER dspace
ADD --chown=dspace . /app/
# Trigger the installation of all maven dependencies (hide download progress messages)
-RUN mvn --no-transfer-progress package
+# Maven flags here ensure that we skip final assembly, skip building test environment and skip all code verification checks.
+# These flags speed up this installation as much as reasonably possible.
+ENV MAVEN_FLAGS="-P-assembly -P-test-environment -Denforcer.skip=true -Dcheckstyle.skip=true -Dlicense.skip=true -Dxml.skip=true"
+RUN mvn --no-transfer-progress install ${MAVEN_FLAGS}
# Clear the contents of the /app directory (including all maven builds), so no artifacts remain.
# This ensures when dspace:dspace is built, it will use the Maven local cache (~/.m2) for dependencies
diff --git a/Dockerfile.test b/Dockerfile.test
index 4e9b2b5b4343..031394ad256c 100644
--- a/Dockerfile.test
+++ b/Dockerfile.test
@@ -10,7 +10,7 @@
ARG JDK_VERSION=11
# Step 1 - Run Maven Build
-FROM dspace/dspace-dependencies:dspace-7_x as build
+FROM dspace/dspace-dependencies:dspace-7_x AS build
ARG TARGET_DIR=dspace-installer
WORKDIR /app
# The dspace-installer directory will be written to /install
@@ -27,7 +27,7 @@ RUN mvn --no-transfer-progress package -Pdspace-rest && \
mvn clean
# Step 2 - Run Ant Deploy
-FROM openjdk:${JDK_VERSION}-slim as ant_build
+FROM eclipse-temurin:${JDK_VERSION} AS ant_build
ARG TARGET_DIR=dspace-installer
# COPY the /install directory from 'build' container to /dspace-src in this container
COPY --from=build /install /dspace-src
diff --git a/docker-compose-cli.yml b/docker-compose-cli.yml
index 9c66fed6835b..6bbf9f66d97c 100644
--- a/docker-compose-cli.yml
+++ b/docker-compose-cli.yml
@@ -1,8 +1,12 @@
-version: "3.7"
-
+networks:
+ # Default to using network named 'dspacenet' from docker-compose.yml.
+ # Its full name will be prepended with the project name (e.g. "-p d7" means it will be named "d7_dspacenet")
+ default:
+ name: ${COMPOSE_PROJECT_NAME}_dspacenet
+ external: true
services:
dspace-cli:
- image: "${DOCKER_OWNER:-dspace}/dspace-cli:${DSPACE_VER:-dspace-7_x}"
+ image: "${DOCKER_OWNER:-dspace}/dspace-cli:${DSPACE_VER:-dspace-cris-7_x}"
container_name: dspace-cli
build:
context: .
@@ -24,15 +28,13 @@ services:
# Mount local [src]/dspace/config/ to container. This syncs your local configs with container
# NOTE: Environment variables specified above will OVERRIDE any configs in local.cfg or dspace.cfg
- ./dspace/config:/dspace/config
+ # Mount local [src]/dspace/etc/ to container. This syncs local etc files with container.
+ # These etc files are used to initialize DSpace-CRIS layout
+ - ./dspace/etc:/dspace/etc
entrypoint: /dspace/bin/dspace
command: help
- networks:
- - dspacenet
tty: true
stdin_open: true
volumes:
assetstore:
-
-networks:
- dspacenet:
diff --git a/docker-compose.yml b/docker-compose.yml
index 6c1615040722..ebd4ce649a6e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,4 +1,3 @@
-version: '3.7'
networks:
dspacenet:
ipam:
@@ -20,7 +19,7 @@ services:
# Uncomment to set a non-default value for dspace.server.url or dspace.ui.url
# dspace__P__server__P__url: http://localhost:8080/server
# dspace__P__ui__P__url: http://localhost:4000
- dspace__P__name: 'DSpace Started with Docker Compose'
+ dspace__P__name: 'DSpace-CRIS Started with Docker Compose'
# db.url: Ensure we are using the 'dspacedb' image for our database
db__P__url: 'jdbc:postgresql://dspacedb:5432/dspace'
# solr.server: Ensure we are using the 'dspacesolr' image for Solr
@@ -29,14 +28,14 @@ services:
# from the host machine. This IP range MUST correspond to the 'dspacenet' subnet defined above.
proxies__P__trusted__P__ipranges: '172.23.0'
LOGGING_CONFIG: /dspace/config/log4j2-container.xml
- image: "${DOCKER_OWNER:-dspace}/dspace:${DSPACE_VER:-dspace-7_x-test}"
+ image: "${DOCKER_OWNER:-dspace}/dspace:${DSPACE_VER:-dspace-cris-7_x-test}"
build:
context: .
dockerfile: Dockerfile.test
depends_on:
- dspacedb
networks:
- dspacenet:
+ - dspacenet
ports:
- published: 8080
target: 8080
@@ -52,22 +51,30 @@ services:
# Mount local [src]/dspace/config/ to container. This syncs your local configs with container
# NOTE: Environment variables specified above will OVERRIDE any configs in local.cfg or dspace.cfg
- ./dspace/config:/dspace/config
+ # Mount local [src]/dspace/etc/ to container. This syncs local etc files with container.
+ # These etc files are used to initialize DSpace-CRIS layout
+ - ./dspace/etc:/dspace/etc
# Ensure that the database is ready BEFORE starting tomcat
# 1. While a TCP connection to dspacedb port 5432 is not available, continue to sleep
# 2. Then, run database migration to init database tables
- # 3. Finally, start Tomcat
+ # 3. Then, create the default Entity Types defined in cris.cfg
+ # 4. Then, create custom DSpace relationship types defined in correction & hide-sort configs
+ # 5. Finally, start Tomcat
entrypoint:
- /bin/bash
- '-c'
- |
while (! /dev/null 2>&1; do sleep 1; done;
/dspace/bin/dspace database migrate
+ /dspace/bin/dspace dsrun org.dspace.app.util.InitializeEntityTypesOnly -d
+ /dspace/bin/dspace dsrun org.dspace.app.util.InitializeEntities -f /dspace/config/entities/correction-relationship-types.xml
+ /dspace/bin/dspace dsrun org.dspace.app.util.InitializeEntities -f /dspace/config/entities/hide-sort-relationship-types.xml
catalina.sh run
# DSpace PostgreSQL database container
dspacedb:
container_name: dspacedb
# Uses a custom Postgres image with pgcrypto installed
- image: "${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-dspace-7_x}"
+ image: "${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-dspace-cris-7_x}"
build:
# Must build out of subdirectory to have access to install script for pgcrypto
context: ./dspace/src/main/docker/dspace-postgres-pgcrypto/
@@ -87,10 +94,12 @@ services:
# DSpace Solr container
dspacesolr:
container_name: dspacesolr
- image: "${DOCKER_OWNER:-dspace}/dspace-solr:${DSPACE_VER:-dspace-7_x}"
+ image: "${DOCKER_OWNER:-dspace}/dspace-solr:${DSPACE_VER:-dspace-cris-7_x}"
build:
- context: .
- dockerfile: ./dspace/src/main/docker/dspace-solr/Dockerfile
+ context: ./dspace/src/main/docker/dspace-solr/
+ # Provide path to Solr configs necessary to build Docker image
+ additional_contexts:
+ solrconfigs: ./dspace/solr/
args:
SOLR_VERSION: "${SOLR_VER:-8.11}"
networks:
@@ -113,14 +122,22 @@ services:
- '-c'
- |
init-var-solr
+ precreate-core audit /opt/solr/server/solr/configsets/audit
+ cp -r /opt/solr/server/solr/configsets/audit/* audit
precreate-core authority /opt/solr/server/solr/configsets/authority
cp -r /opt/solr/server/solr/configsets/authority/* authority
+ precreate-core dedup /opt/solr/server/solr/configsets/dedup
+ cp -r /opt/solr/server/solr/configsets/dedup/* dedup
+ precreate-core nbevent /opt/solr/server/solr/configsets/nbevent
+ cp -r /opt/solr/server/solr/configsets/nbevent/* nbevent
precreate-core oai /opt/solr/server/solr/configsets/oai
cp -r /opt/solr/server/solr/configsets/oai/* oai
precreate-core search /opt/solr/server/solr/configsets/search
cp -r /opt/solr/server/solr/configsets/search/* search
precreate-core statistics /opt/solr/server/solr/configsets/statistics
cp -r /opt/solr/server/solr/configsets/statistics/* statistics
+ precreate-core suggestion /opt/solr/server/solr/configsets/suggestion
+ cp -r /opt/solr/server/solr/configsets/suggestion/* suggestion
exec solr -f
volumes:
assetstore:
diff --git a/dspace/src/main/docker-compose/README.md b/dspace/src/main/docker-compose/README.md
index 35a6e6055433..f45cdb77e1fb 100644
--- a/dspace/src/main/docker-compose/README.md
+++ b/dspace/src/main/docker-compose/README.md
@@ -51,33 +51,49 @@ Documentation for all Dockerfiles used by these compose scripts can be found in
Documentation for all Dockerfiles used by these compose scripts can be found in the ["docker" folder README](../docker/README.md)
+## To build DSpace-CRIS images using code in your branch
+```
+docker compose -f docker-compose.yml -f docker-compose-cli.yml build
+```
-## To refresh / pull DSpace images from Dockerhub
+OPTIONALLY, you can build DSpace images using a different JDK_VERSION like this:
```
-docker-compose -f docker-compose.yml -f docker-compose-cli.yml pull
+docker compose -f docker-compose.yml -f docker-compose-cli.yml build --build-arg JDK_VERSION=17
```
+Default is Java 11, but other LTS releases (e.g. 17) are also supported.
+
+## Install/Run DSpace-CRIS 7 REST from your current branch
-## To build DSpace images using code in your branch
+First, start up the containers
```
-docker-compose -f docker-compose.yml -f docker-compose-cli.yml build
+docker compose -p dcris7 up -d
```
-OPTIONALLY, you can build DSpace images using a different JDK_VERSION like this:
+Then, you will need to create an Administrator account to initialize the DSpace-CRIS community/collection structure.
+This example creates an Admin "dspacedemo+admin@gmail.com" with a password of "dspace":
```
-docker-compose -f docker-compose.yml -f docker-compose-cli.yml build --build-arg JDK_VERSION=17
+docker compose -p dcris7 -f docker-compose-cli.yml run --rm dspace-cli create-administrator -e dspacedemo+admin@gmail.com -f Demo -l Administrator -p dspace -c en
```
-Default is Java 11, but other LTS releases (e.g. 17) are also supported.
-## Run DSpace 7 REST from your current branch
+Next, create the sample Community/Collection structure (using that Admin account)
+```
+docker compose -p dcris7 -f docker-compose-cli.yml run --rm dspace-cli dsrun org.dspace.administer.StructBuilder -e dspacedemo+admin@gmail.com -f /dspace/config/sample-structure.xml -o -
```
-docker-compose -p d7 up -d
+
+Finally, initialize the layout using the provided XLS config file
```
+docker compose -p dcris7 -f docker-compose-cli.yml run --rm dspace-cli cris-layout-tool -f /dspace/etc/conftool/cris-layout-configuration.xls
+```
+
+## Run DSpace-CRIS 7 REST and Angular from your branch
-## Run DSpace 7 REST and Angular from your branch
+NOTE: If this is your first time running the DSpace-CRIS backend, make sure to follow the "Install/Run" instructions
+above *first*.
```
-docker-compose -p d7 -f docker-compose.yml -f dspace/src/main/docker-compose/docker-compose-angular.yml up -d
+docker compose -p dcris7 -f docker-compose.yml -f dspace/src/main/docker-compose/docker-compose-angular.yml up -d
```
+NOTE: This starts the UI in development mode. It will take a few minutes to see the UI as the Angular code needs to be compiled.
## Run DSpace REST and DSpace Angular from local branches
diff --git a/dspace/src/main/docker-compose/cli.assetstore.yml b/dspace/src/main/docker-compose/cli.assetstore.yml
index d6a6a4395f4e..6563aa081eb1 100644
--- a/dspace/src/main/docker-compose/cli.assetstore.yml
+++ b/dspace/src/main/docker-compose/cli.assetstore.yml
@@ -6,8 +6,6 @@
# http://www.dspace.org/license/
#
-version: "3.7"
-
services:
dspace-cli:
environment:
diff --git a/dspace/src/main/docker-compose/cli.ingest.yml b/dspace/src/main/docker-compose/cli.ingest.yml
index d22a235d4fdd..6172147f1955 100644
--- a/dspace/src/main/docker-compose/cli.ingest.yml
+++ b/dspace/src/main/docker-compose/cli.ingest.yml
@@ -6,8 +6,6 @@
# http://www.dspace.org/license/
#
-version: "3.7"
-
services:
dspace-cli:
environment:
diff --git a/dspace/src/main/docker-compose/db.entities.yml b/dspace/src/main/docker-compose/db.entities.yml
index 32c54a5d0bd1..2427ba5bacca 100644
--- a/dspace/src/main/docker-compose/db.entities.yml
+++ b/dspace/src/main/docker-compose/db.entities.yml
@@ -6,11 +6,9 @@
# http://www.dspace.org/license/
#
-version: "3.7"
-
services:
dspacedb:
- image: dspace/dspace-postgres-pgcrypto:dspace-7_x-loadsql
+ image: dspace/dspace-postgres-pgcrypto:dspace-cris-7_x-loadsql
environment:
# This SQL is available from https://github.com/DSpace-Labs/AIP-Files/releases/tag/demo-entities-data
- LOADSQL=https://github.com/DSpace-Labs/AIP-Files/releases/download/demo-entities-data/dspace7-entities-data.sql
@@ -18,27 +16,12 @@ services:
### OVERRIDE default 'entrypoint' in 'docker-compose.yml ####
# Ensure that the database is ready BEFORE starting tomcat
# 1. While a TCP connection to dspacedb port 5432 is not available, continue to sleep
- # 2. Then, run database migration to init database tables
- # 3. (Custom for Entities) enable Entity-specific collection submission mappings in item-submission.xml
- # This 'sed' command inserts the sample configurations specific to the Entities data set, see:
- # https://github.com/DSpace/DSpace/blob/main/dspace/config/item-submission.xml#L36-L49
- # 4. Finally, start Tomcat
+ # 2. Then, run migration latest version of database tables (run with "ignored" in case this SQL data is outdated)
+ # 3. Finally, start Tomcat
entrypoint:
- /bin/bash
- '-c'
- |
while (! /dev/null 2>&1; do sleep 1; done;
- /dspace/bin/dspace database migrate
- sed -i '/name-map collection-handle="default".*/a \\n \
- \
- \
- \
- \
- \
- \
- \
- \
- \
- \
- ' /dspace/config/item-submission.xml
+ /dspace/bin/dspace database migrate ignored
catalina.sh run
diff --git a/dspace/src/main/docker-compose/db.restore.yml b/dspace/src/main/docker-compose/db.restore.yml
index fc2f30b9d8e0..dcad55c71a9d 100644
--- a/dspace/src/main/docker-compose/db.restore.yml
+++ b/dspace/src/main/docker-compose/db.restore.yml
@@ -6,15 +6,13 @@
# http://www.dspace.org/license/
#
-version: "3.7"
-
#
# Overrides the default "dspacedb" container behavior to load a local SQL file into PostgreSQL.
#
# This can be used to restore a "dspacedb" container from a pg_dump, or during upgrade to a new version of PostgreSQL.
services:
dspacedb:
- image: dspace/dspace-postgres-pgcrypto:dspace-7_x-loadsql
+ image: dspace/dspace-postgres-pgcrypto:dspace-cris-7_x-loadsql
environment:
# Location where the dump SQL file will be available on the running container
- LOCALSQL=/tmp/pgdump.sql
diff --git a/dspace/src/main/docker-compose/docker-compose-angular.yml b/dspace/src/main/docker-compose/docker-compose-angular.yml
index 00dde2e83187..c47d93f07784 100644
--- a/dspace/src/main/docker-compose/docker-compose-angular.yml
+++ b/dspace/src/main/docker-compose/docker-compose-angular.yml
@@ -6,9 +6,12 @@
# http://www.dspace.org/license/
#
-version: '3.7'
networks:
- dspacenet:
+ # Default to using network named 'dspacenet' from docker-compose.yml.
+ # Its full name will be prepended with the project name (e.g. "-p d7" means it will be named "d7_dspacenet")
+ default:
+ name: ${COMPOSE_PROJECT_NAME}_dspacenet
+ external: true
services:
dspace-angular:
container_name: dspace-angular
@@ -23,9 +26,7 @@ services:
DSPACE_REST_HOST: localhost
DSPACE_REST_PORT: 8080
DSPACE_REST_NAMESPACE: /server
- image: dspace/dspace-angular:dspace-7_x
- networks:
- dspacenet:
+ image: dspace/dspace-angular:dspace-cris-7_x
ports:
- published: 4000
target: 4000
diff --git a/dspace/src/main/docker-compose/docker-compose-iiif.yml b/dspace/src/main/docker-compose/docker-compose-iiif.yml
index 2ab58d9014f0..6f5470e5d157 100644
--- a/dspace/src/main/docker-compose/docker-compose-iiif.yml
+++ b/dspace/src/main/docker-compose/docker-compose-iiif.yml
@@ -10,9 +10,12 @@
# Test environment for DSpace + Cantaloupe for IIIF support. See README for instructions.
# This should NEVER be used in production scenarios.
#
-version: '3.7'
networks:
- dspacenet:
+ # Default to using network named 'dspacenet' from docker-compose.yml.
+ # Its full name will be prepended with the project name (e.g. "-p d7" means it will be named "d7_dspacenet")
+ default:
+ name: ${COMPOSE_PROJECT_NAME}_dspacenet
+ external: true
services:
dspace-iiif:
container_name: dspace-iiif
@@ -21,8 +24,6 @@ services:
# Using UCLA Library image as it seems to be most maintained at this time. There is no official image.
# https://hub.docker.com/r/uclalibrary/cantaloupe
image: uclalibrary/cantaloupe:5.0.4-0
- networks:
- dspacenet:
ports:
- '8182:8182'
# For a guide of environment variables that can be used, see
diff --git a/dspace/src/main/docker-compose/docker-compose-shibboleth.yml b/dspace/src/main/docker-compose/docker-compose-shibboleth.yml
index 58f1527d6ccb..f7fb2dcbd1ae 100644
--- a/dspace/src/main/docker-compose/docker-compose-shibboleth.yml
+++ b/dspace/src/main/docker-compose/docker-compose-shibboleth.yml
@@ -10,9 +10,12 @@
# Test environment for DSpace + Shibboleth (running via mod_shib in Apache). See README for instructions.
# This should NEVER be used in production scenarios.
#
-version: '3.7'
networks:
- dspacenet:
+ # Default to using network named 'dspacenet' from docker-compose.yml.
+ # Its full name will be prepended with the project name (e.g. "-p d7" means it will be named "d7_dspacenet")
+ default:
+ name: ${COMPOSE_PROJECT_NAME}_dspacenet
+ external: true
services:
dspace-shibboleth:
container_name: dspace-shibboleth
@@ -22,8 +25,6 @@ services:
build:
# Must be relative to root, so that it can be built alongside [src]/docker-compose.yml
context: ./dspace/src/main/docker/dspace-shibboleth
- networks:
- dspacenet:
ports:
- published: 80
target: 80
diff --git a/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/Dockerfile b/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/Dockerfile
index b2131a740262..aabf87df3eda 100644
--- a/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/Dockerfile
+++ b/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/Dockerfile
@@ -10,7 +10,7 @@
# docker build --build-arg POSTGRES_VERSION=13 --build-arg POSTGRES_PASSWORD=mypass ./dspace/src/main/docker/dspace-postgres-pgcrypto-curl/
# This will be published as dspace/dspace-postgres-pgcrypto:$DSPACE_VERSION-loadsql
-ARG POSTGRES_VERSION=13
+ARG POSTGRES_VERSION=15
ARG POSTGRES_PASSWORD=dspace
FROM postgres:${POSTGRES_VERSION}
diff --git a/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/install-pgcrypto.sh b/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/install-pgcrypto.sh
index 3f8e95e1044f..d8e0382010df 100644
--- a/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/install-pgcrypto.sh
+++ b/dspace/src/main/docker/dspace-postgres-pgcrypto-curl/install-pgcrypto.sh
@@ -23,7 +23,6 @@ then
rm /tmp/dspace-db-init.sql
touch $CHECKFILE
- exit
fi
# If $LOCALSQL environment variable set, then simply run it in PostgreSQL
@@ -34,15 +33,14 @@ then
psql -U $POSTGRES_USER < ${LOCALSQL}
touch $CHECKFILE
- exit
fi
# Then, setup pgcrypto on this database
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
-- Create a new schema in this database named "extensions" (or whatever you want to name it)
- CREATE SCHEMA extensions;
+ CREATE SCHEMA IF NOT EXISTS extensions;
-- Enable this extension in this new schema
- CREATE EXTENSION pgcrypto SCHEMA extensions;
+ CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA extensions;
-- Update your database's "search_path" to also search the new "extensions" schema.
-- You are just appending it on the end of the existing comma-separated list.
ALTER DATABASE dspace SET search_path TO "\$user",public,extensions;
diff --git a/dspace/src/main/docker/dspace-postgres-pgcrypto/Dockerfile b/dspace/src/main/docker/dspace-postgres-pgcrypto/Dockerfile
index 7dde1a6bfd1c..2298cd4e76ea 100644
--- a/dspace/src/main/docker/dspace-postgres-pgcrypto/Dockerfile
+++ b/dspace/src/main/docker/dspace-postgres-pgcrypto/Dockerfile
@@ -10,7 +10,7 @@
# docker build --build-arg POSTGRES_VERSION=13 --build-arg POSTGRES_PASSWORD=mypass ./dspace/src/main/docker/dspace-postgres-pgcrypto/
# This will be published as dspace/dspace-postgres-pgcrypto:$DSPACE_VERSION
-ARG POSTGRES_VERSION=13
+ARG POSTGRES_VERSION=15
ARG POSTGRES_PASSWORD=dspace
FROM postgres:${POSTGRES_VERSION}
diff --git a/dspace/src/main/docker/dspace-postgres-pgcrypto/install-pgcrypto.sh b/dspace/src/main/docker/dspace-postgres-pgcrypto/install-pgcrypto.sh
index 65405aa7bdb6..67c4539b5a46 100644
--- a/dspace/src/main/docker/dspace-postgres-pgcrypto/install-pgcrypto.sh
+++ b/dspace/src/main/docker/dspace-postgres-pgcrypto/install-pgcrypto.sh
@@ -11,9 +11,9 @@ set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
-- Create a new schema in this database named "extensions" (or whatever you want to name it)
- CREATE SCHEMA extensions;
+ CREATE SCHEMA IF NOT EXISTS extensions;
-- Enable this extension in this new schema
- CREATE EXTENSION pgcrypto SCHEMA extensions;
+ CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA extensions;
-- Update your database's "search_path" to also search the new "extensions" schema.
-- You are just appending it on the end of the existing comma-separated list.
ALTER DATABASE dspace SET search_path TO "\$user",public,extensions;
diff --git a/dspace/src/main/docker/dspace-solr/Dockerfile b/dspace/src/main/docker/dspace-solr/Dockerfile
index 9fe9adf9440f..18cf3be6b7a4 100644
--- a/dspace/src/main/docker/dspace-solr/Dockerfile
+++ b/dspace/src/main/docker/dspace-solr/Dockerfile
@@ -14,22 +14,36 @@ ARG SOLR_VERSION=8.11
FROM solr:${SOLR_VERSION}-slim
-ENV AUTHORITY_CONFIGSET_PATH=/opt/solr/server/solr/configsets/authority/conf \
+ENV AUDIT_CONFIGSET_PATH=/opt/solr/server/solr/configsets/audit/conf \
+ AUTHORITY_CONFIGSET_PATH=/opt/solr/server/solr/configsets/authority/conf \
+ DEDUP_CONFIGSET_PATH=/opt/solr/server/solr/configsets/dedup/conf \
+ NBEVENT_CONFIGSET_PATH=/opt/solr/server/solr/configsets/nbevent/conf \
OAI_CONFIGSET_PATH=/opt/solr/server/solr/configsets/oai/conf \
SEARCH_CONFIGSET_PATH=/opt/solr/server/solr/configsets/search/conf \
- STATISTICS_CONFIGSET_PATH=/opt/solr/server/solr/configsets/statistics/conf
+ STATISTICS_CONFIGSET_PATH=/opt/solr/server/solr/configsets/statistics/conf \
+ SUGGESTION_CONFIGSET_PATH=/opt/solr/server/solr/configsets/suggestion/conf
USER root
-RUN mkdir -p $AUTHORITY_CONFIGSET_PATH && \
+RUN mkdir -p $AUDIT_CONFIGSET_PATH && \
+ mkdir -p $AUTHORITY_CONFIGSET_PATH && \
+ mkdir -p $DEDUP_CONFIGSET_PATH && \
+ mkdir -p $NBEVENT_CONFIGSET_PATH && \
mkdir -p $OAI_CONFIGSET_PATH && \
mkdir -p $SEARCH_CONFIGSET_PATH && \
- mkdir -p $STATISTICS_CONFIGSET_PATH
-
-COPY dspace/solr/authority/conf/* $AUTHORITY_CONFIGSET_PATH/
-COPY dspace/solr/oai/conf/* $OAI_CONFIGSET_PATH/
-COPY dspace/solr/search/conf/* $SEARCH_CONFIGSET_PATH/
-COPY dspace/solr/statistics/conf/* $STATISTICS_CONFIGSET_PATH/
+ mkdir -p $STATISTICS_CONFIGSET_PATH && \
+ mkdir -p $SUGGESTION_CONFIGSET_PATH
+
+# NOTE: "solrconfigs" MUST be passed in by docker-compose via "additional_contexts"
+# OR via "docker build --build-context solrconfigs=[path-to-dspace/solr]"
+COPY --from=solrconfigs audit/conf/* $AUDIT_CONFIGSET_PATH/
+COPY --from=solrconfigs authority/conf/* $AUTHORITY_CONFIGSET_PATH/
+COPY --from=solrconfigs dedup/conf/* $DEDUP_CONFIGSET_PATH/
+COPY --from=solrconfigs nbevent/conf/* $NBEVENT_CONFIGSET_PATH/
+COPY --from=solrconfigs oai/conf/* $OAI_CONFIGSET_PATH/
+COPY --from=solrconfigs search/conf/* $SEARCH_CONFIGSET_PATH/
+COPY --from=solrconfigs statistics/conf/* $STATISTICS_CONFIGSET_PATH/
+COPY --from=solrconfigs suggestion/conf/* $SUGGESTION_CONFIGSET_PATH/
RUN chown -R solr:solr /opt/solr/server/solr/configsets