dataverse:
container_name: "dataverse"
hostname: dataverse
build:
dockerfile: ./dataverse/Dockerfile
args:
- BASE_VERSION=${BASE_VERSION:-6.6-noble}
- DATAVERSE_WAR_URL=${DATAVERSE_WAR_URL:-https://github.com/IQSS/dataverse/releases/download/v6.6/dataverse-6.6.war}
- USER_ID=${USER_ID:-1000}
- GROUP_ID=${GROUP_ID:-1000}
From @Eryk Kulikowski at https://github.com/libis/rdm-integration/blob/bca3826674a426522fdd75437b0e4ff54234f6e6/docker-compose.yml#L66
What I like most in that repo: the modularized approach to setup. @Eryk Kulikowski this would be good to have in upstream, too!
Absolutely. That compose file was something we only touched on during tech hours but I'd love to hear more.
I just opened a PR that might be interesting for the upstream repo:ย https://github.com/IQSS/dataverse/pull/11961
It adds fast-redeploy scripts for container-based development that reduce iteration time from ~54s to ~12s (4.5x faster). The workflow uses exploded WAR deployment with incremental compilation and Payara's asadmin deploy --force for hot redeployment without container restarts.
Key features:
This could be a good topic for tech hours - we could discuss what developer workflow improvements would be valuable to include in the mainstream Dataverse repo.
@Eryk Kulikowski THANK YOU!
And yes, I'd love to hear from other developers any tips and tricks to speed up development!
@Eryk Kulikowski I really like what you did in your PR! Thanks for testing out all of this stuff and looking into making it work!
I have a few suggestions and maybe we should discuss them here in chat or during the next containerization meeting.
Braindump / Notes to self:
cargo.glassfish.deploy.arg.forceEryk Kulikowski said:
I just opened a PR that might be interesting for the upstream repo:ย https://github.com/IQSS/dataverse/pull/11961
@Eryk Kulikowski sorry, I'm only just trying this! I'm running into some problems, unfortunately. Can you please take a look at my comment at https://github.com/IQSS/dataverse/pull/11961/changes#r3304062417 ? Thanks!
Actually, you know what, I tried it again and it worked!
Merged! Thanks, @Eryk Kulikowski! :heart:
@Eryk Kulikowski I'm already using your scripts! I love them! Thanks again!
I used it all day today. It's great!
The IDE methods are much more fiddly. You have to update each class individually.
With Eryk's method you can edit a bunch of files and not think hard about which one you edited. You can just run the script and BOOM, the new code is deployed.
Cool! Still wondering if we can make it a bit more aligned, more intuitive to use for folks new to this kind of stuff. It might seem strange to people to run these scripts.
As a command line junkie, I find them quite natural! :smile: :tada:
@Eryk Kulikowski I switched to #11507 where many more fields have been added to scripts/api/data/metadatablocks/geospatial.tsv but I don't see them:
![]()
Do I have to do something special apart from rm -rf docker-dev-volumes to pick up the new fields before running scripts/dev/dev-start-frd.sh?
I can see the new fields with the normal mvnย -Pctย cleanย packageย docker:run method. I assume it's because the configbaker image is re-created.
@Philip Durbin ๐ ,
Most likely the mvnย -Pctย cleanย packageย docker:run updated your db (by processing tsv and adding the metadata), so the frd scripts should work as usual after that step? And you are right to suspect the config bakers, etc. Fast redeploy scripts only touch on the java code/war file, not DB or other things.
Yes, that's what I'm thinking. We just might want to leave a note at a future version of https://preview.guides.gdcc.io/en/develop/container/dev-usage.html#fast-redeploy-command-line to help set expectations.
@Eryk Kulikowski (and others), if you're interested, @Oliver Bertuch and I chatted a bit about your (awesome) fast redeploy scripts this morning during the container meeting. Here's the recording: https://drive.google.com/drive/folders/1-HjwWrvQggmILe0hSBKgPLREmt6uwgy-?usp=drive_link
Great feedback, thanks! I tried to improve the scripts based on that: https://github.com/IQSS/dataverse/pull/12467
Simplified and runs now with mvn -Pfrd package, removed the shell scripts, etc.
@Eryk Kulikowski I heard you were on vacation. Welcome back! I wanted to let you know that like I said at https://github.com/IQSS/dataverse/pull/12467#issuecomment-4866949488 Oliver gave a lot of great feedback on your PR at the end of the July container meeting. Here's the recording. You can skip ahead to ~55:30.
@Eryk Kulikowski I'm still happily using ./scripts/dev/dev-frd.sh but when you get a chance, can you please resolve merge conflicts in #12467? I'd like to give it a try at some point.
Resolved.
Thanks!
@Eryk Kulikowski
Hi , i noticed that a metadata upload failed with HTTP 500, but the update job still printed โDoneโ and exited 0.
As a user, I would read that as โmy changes were applied,โ even though the update failed. Could it show a clear error and stop instead?
@Eryk Kulikowski for a little context, I asked @Sy to take a look at #12467. :smile: She's a new-ish contributor. ![]()
Sy has marked this topic as resolved.
Sy has marked this topic as unresolved.
Thanks @Sy , I reproduced it: the culprit is the shared scripts/api/setup-datasetfields.sh, which ignores HTTP errors from curl, so update-metadata.sh never saw the 500 (bootstrap and the installer have the same silent failure). Could you open an issue for it and have a go at the PR? Looping over the blocks with curl -sS -w "\n%{http_code}", printing the block name, status and body on failure, and exiting non-zero at the end worked in my test, and #12467 then stops before the Solr update and "Done". The 500 body also tells you which part and line of your TSV broke, so that should point to your actual failure.
Eryk Kulikowski said:
Thanks Sy , I reproduced it: the culprit is the shared
scripts/api/setup-datasetfields.sh, which ignores HTTP errors from curl, soupdate-metadata.shnever saw the 500 (bootstrap and the installer have the same silent failure). Could you open an issue for it and have a go at the PR? Looping over the blocks withcurl -sS -w "\n%{http_code}", printing the block name, status and body on failure, and exiting non-zero at the end worked in my test, and #12467 then stops before the Solr update and "Done". The 500 body also tells you which part and line of your TSV broke, so that should point to your actual failure.
Thanks for reproducing it and sharing your approach! Iโll open an issue and work on a PR for
setup-datasetfields.sh.
@Eryk Kulikowski @Philip Durbin ๐
Hi Eryk and Philip , Iโve opened the issue and submitted the fix: https://github.com/IQSS/dataverse/pull/12805. Please take a look when you are free.
@Sy thanks! I added it to "ready for triage" at least!
@Sy thanks for the quick PR! I left a review with requested changes: the uploader part looks good, and the main point is to let setup finish (including the admin API lockdown) and exit non-zero at the end instead of stopping early. Happy to help if anything in the inline comments is unclear. @Philip Durbin ๐ I sized it as 3 and moved it from triage to In Review.
Last updated: Nov 02 2026 at 07:01 UTC