{% include nav.html %}
This tutorial describes the individual steps for deploying DSpace to Docker using the docker command. See dspace-dev-compose for an automated setup using Docker compose. This tutorial is useful for understanding how Docker manages DSpace components.
- Setting Up Docker for DSpace
- Building DSpace for Docker
- Make sure that the environment variable DSPACE_SRC is set to the directory containing your cloned DSpace repo
export DSPACE_SRC=$(pwd)
docker network create dspace-demo-net
This volume will persist you database data even if you stop the database server
docker volume create pgdata-demo
Start the database service - this must be done before deployment
docker run -it -d --network dspace-demo-net --name dspacedb -v pgdata-demo:/pgdata -e PGDATA=/pgdata dspace/dspace-postgres-pgcrypto
Attach to the database server to query directly
docker exec -it --detach-keys "ctrl-p" dspacedb psql -U dspace
winpty docker exec -it --detach-keys "ctrl-p" dspacedb psql -U dspace
This volume will persist the DSpace assetstore and solr content between runs
docker volume create dspace-demo
docker run -it --rm --network dspace-demo-net -v ${DSPACE_SRC}:/dspace-src -v dspace-demo:/dspace -w /dspace-src/dspace/target/dspace-installer dspace/dspace-tomcat ant update clean_backups
winpty docker run -it --rm --network dspace-demo-net -v /${DSPACE_SRC}:/dspace-src -v dspace-demo://dspace -w //dspace-src/dspace/target/dspace-installer dspace/dspace-tomcat ant update clean_backups
docker run --network dspace-demo-net -v dspace-demo:/dspace -p 8080:8080 --name dspacetomcat -e DSPACE_INSTALL=/dspace dspace/dspace-tomcat
Note that ctrl-P is used to terminate the terminal session
docker exec -it --detach-keys "ctrl-p" dspacetomcat /bin/bash
winpty docker exec -it --detach-keys "ctrl-p" dspacetomcat //bin/bash
/dspace/bin/dspace version
docker exec -it --detach-keys "ctrl-p" dspacetomcat /bin/bash
winpty docker exec -it --detach-keys "ctrl-p" dspacetomcat //bin/bash
Bash Command
/dspace/bin/dspace create-administrator -e [email protected] -f Admin -l User -p admin -c en
Identify a set of AIP files to use for testing.
A sample set is located here.
In the dspacetomcat bash terminal, create an input directory
mkdir /tmp/testdata
To facilitate the data import, use docker cp.
docker cp **yourLocalTestDataDir** dspacetomcat:/tmp/testdata
In the bash window created above, run the following command to import data.
cd /tmp/testdata
for file in COMM* COLL* ITEM*;
do
/dspace/bin/dspace packager -r -t AIP -e [email protected] -f -u $file
done
It is a long standing issue with AIP import files that necessitates reseting sequences after importing content from AIP Files.
In the dspacedb psql terminal, run the following SQL to reset the database sequences.
docker exec -it --detach-keys "ctrl-p" dspacedb psql -U dspace
winpty docker exec -it --detach-keys "ctrl-p" dspacedb psql -U dspace
SQL
SELECT
setval(
'handle_seq',
CAST (
max(
to_number(
regexp_replace(handle, '.*/', ''),
'999999999999'
)
)
AS BIGINT
)
)
FROM handle
WHERE handle SIMILAR TO '%/[0123456789]*';
- DSpace 5 or 6: http://localhost:8080/xmlui
- DSpace 7: http://localhost:8080/spring-rest
docker stop dspacetomcat
docker stop dspacedb
When DSpace is restarted, the contents of your volumes will be restored
docker start dspacedb
docker start dspacetomcat
docker stop dspacetomcat
docker stop dspacedb
docker rm dspacetomcat
docker rm dspacedb
docker network rm dspace-demo-net
docker volume rm pgdata-demo
docker volume rm dspace-demo