diff --git a/docker/cli.assetstore.yml b/docker/cli.assetstore.yml index 592194a7528..c2846286d78 100644 --- a/docker/cli.assetstore.yml +++ b/docker/cli.assetstore.yml @@ -22,7 +22,8 @@ services: networks: dspacenet: {} environment: - - LOADASSETS=https://www.dropbox.com/s/v3ahfcuatklbmi0/assetstore-2019-11-28.tar.gz?dl=1 + # This assetstore zip is available from https://github.com/DSpace-Labs/AIP-Files/releases/tag/demo-entities-data + - LOADASSETS=https://github.com/DSpace-Labs/AIP-Files/releases/download/demo-entities-data/assetstore.tar.gz entrypoint: - /bin/bash - '-c' diff --git a/docker/db.entities.yml b/docker/db.entities.yml index d39eedc5c68..818d14877cb 100644 --- a/docker/db.entities.yml +++ b/docker/db.entities.yml @@ -19,4 +19,33 @@ services: image: dspace/dspace-postgres-pgcrypto:loadsql environment: # This LOADSQL should be kept in sync with the URL in DSpace/DSpace - - LOADSQL=https://www.dropbox.com/s/4ap1y6deseoc8ws/dspace7-entities-2019-11-28.sql?dl=1 + # 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-2021-04-14.sql + dspace: + ### OVERRIDE default 'entrypoint' in 'docker-compose-rest.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 + 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 + catalina.sh run \ No newline at end of file diff --git a/docker/docker-compose-ci.yml b/docker/docker-compose-ci.yml index ec2d0912cfa..d2d02f0a554 100644 --- a/docker/docker-compose-ci.yml +++ b/docker/docker-compose-ci.yml @@ -8,9 +8,13 @@ # Docker Compose for running the DSpace backend for e2e testing in a CI environment # This is used by our GitHub CI at .github/workflows/build.yml +# It is based heavily on the Backend's Docker Compose: +# https://github.com/DSpace/DSpace/blob/main/docker-compose.yml +version: '3.7' networks: dspacenet: services: + # DSpace (backend) webapp container dspace: container_name: dspace depends_on: @@ -26,12 +30,28 @@ services: volumes: - assetstore:/dspace/assetstore - "./local.cfg:/dspace/config/local.cfg" + # Mount DSpace's solr configs to a volume, so that we can share to 'dspacesolr' container (see below) + - solr_configs:/dspace/solr + # 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 + entrypoint: + - /bin/bash + - '-c' + - | + while (! /dev/null 2>&1; do sleep 1; done; + /dspace/bin/dspace database migrate + catalina.sh run + # DSpace database container + # NOTE: This is customized to use our loadsql image, so that we are using a database with existing test data dspacedb: container_name: dspacedb environment: # This LOADSQL should be kept in sync with the LOADSQL in # https://github.com/DSpace/DSpace/blob/main/dspace/src/main/docker-compose/db.entities.yml - LOADSQL: https://www.dropbox.com/s/4ap1y6deseoc8ws/dspace7-entities-2019-11-28.sql?dl=1 + # 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-2021-04-14.sql PGDATA: /pgdata image: dspace/dspace-postgres-pgcrypto:loadsql networks: @@ -40,9 +60,14 @@ services: tty: true volumes: - pgdata:/pgdata + # DSpace Solr container dspacesolr: container_name: dspacesolr - image: dspace/dspace-solr + # Uses official Solr image at https://hub.docker.com/_/solr/ + image: solr:8.8 + # Needs main 'dspace' container to start first to guarantee access to solr_configs + depends_on: + - dspace networks: dspacenet: ports: @@ -50,16 +75,27 @@ services: target: 8983 stdin_open: true tty: true + working_dir: /var/solr/data volumes: - - solr_authority:/opt/solr/server/solr/authority/data - - solr_oai:/opt/solr/server/solr/oai/data - - solr_search:/opt/solr/server/solr/search/data - - solr_statistics:/opt/solr/server/solr/statistics/data -version: '3.7' + # Mount our "solr_configs" volume available under the Solr's configsets folder (in a 'dspace' subfolder) + # This copies the Solr configs from main 'dspace' container into 'dspacesolr' via that volume + - solr_configs:/opt/solr/server/solr/configsets/dspace + # Keep Solr data directory between reboots + - solr_data:/var/solr/data + # Initialize all DSpace Solr cores using the mounted configsets (see above), then start Solr + entrypoint: + - /bin/bash + - '-c' + - | + init-var-solr + precreate-core authority /opt/solr/server/solr/configsets/dspace/authority + precreate-core oai /opt/solr/server/solr/configsets/dspace/oai + precreate-core search /opt/solr/server/solr/configsets/dspace/search + precreate-core statistics /opt/solr/server/solr/configsets/dspace/statistics + exec solr -f volumes: assetstore: pgdata: - solr_authority: - solr_oai: - solr_search: - solr_statistics: + solr_data: + # Special volume used to share Solr configs from 'dspace' to 'dspacesolr' container (see above) + solr_configs: \ No newline at end of file diff --git a/docker/docker-compose-rest.yml b/docker/docker-compose-rest.yml index e6668f3f58d..c99e4699411 100644 --- a/docker/docker-compose-rest.yml +++ b/docker/docker-compose-rest.yml @@ -14,6 +14,7 @@ version: '3.7' networks: dspacenet: services: + # DSpace (backend) webapp container dspace: container_name: dspace image: dspace/dspace:dspace-7_x-test @@ -29,6 +30,8 @@ services: volumes: - assetstore:/dspace/assetstore - "./local.cfg:/dspace/config/local.cfg" + # Mount DSpace's solr configs to a volume, so that we can share to 'dspacesolr' container (see below) + - solr_configs:/dspace/solr # 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 @@ -40,6 +43,7 @@ services: while (! /dev/null 2>&1; do sleep 1; done; /dspace/bin/dspace database migrate catalina.sh run + # DSpace database container dspacedb: container_name: dspacedb environment: @@ -54,9 +58,14 @@ services: tty: true volumes: - pgdata:/pgdata + # DSpace Solr container dspacesolr: container_name: dspacesolr - image: dspace/dspace-solr + # Uses official Solr image at https://hub.docker.com/_/solr/ + image: solr:8.8 + # Needs main 'dspace' container to start first to guarantee access to solr_configs + depends_on: + - dspace networks: dspacenet: ports: @@ -64,15 +73,27 @@ services: target: 8983 stdin_open: true tty: true + working_dir: /var/solr/data volumes: - - solr_authority:/opt/solr/server/solr/authority/data - - solr_oai:/opt/solr/server/solr/oai/data - - solr_search:/opt/solr/server/solr/search/data - - solr_statistics:/opt/solr/server/solr/statistics/data + # Mount our "solr_configs" volume available under the Solr's configsets folder (in a 'dspace' subfolder) + # This copies the Solr configs from main 'dspace' container into 'dspacesolr' via that volume + - solr_configs:/opt/solr/server/solr/configsets/dspace + # Keep Solr data directory between reboots + - solr_data:/var/solr/data + # Initialize all DSpace Solr cores using the mounted local configsets (see above), then start Solr + entrypoint: + - /bin/bash + - '-c' + - | + init-var-solr + precreate-core authority /opt/solr/server/solr/configsets/dspace/authority + precreate-core oai /opt/solr/server/solr/configsets/dspace/oai + precreate-core search /opt/solr/server/solr/configsets/dspace/search + precreate-core statistics /opt/solr/server/solr/configsets/dspace/statistics + exec solr -f volumes: assetstore: pgdata: - solr_authority: - solr_oai: - solr_search: - solr_statistics: + solr_data: + # Special volume used to share Solr configs from 'dspace' to 'dspacesolr' container (see above) + solr_configs: