Skip to content

Dataverse container-based development environment #9423

@GPortas

Description

@GPortas

Overview of the Feature Request

The goal is making Dataverse development environment setup and management easier, from the initial installation to the day-to-day development. The following points have been considered when opting for a container-based development environment:

  • SPA frontend developers don’t have to worry so much about backend installation details.
  • Environment initialization/shut down is done in a simple way, considering we use docker-compose.
  • Easier process and with fewer installation dependencies than the current process based on installation scripts and dependencies directly installed on the localhost machine.

In addition, introducing this, currently development-oriented, offers the following advantages, which are transferable and beneficial for a future container-based production environment.

  • Greater scalability and modularity, by self-containing each dependency service in its own container.
  • Greater testability, by having more control over the different dependencies of Dataverse and the application itself.

For Dataverse, a custom Docker image is required. As for now is just for development purposes only, we can resort to fake properties or dependencies when needed (such as fake DOI values or SMTP server). Ideally this image will be evolved for productive use as well.

For Dataverse dependencies (PostgreSQL, Solr, etc) we should use official images where possible or create custom ones if the official ones are not enough. In the case of Keycloak, it would become part of these services too, based on the existing docker (and docker-compose) configuration recently added to the code base.

The ultimate goal is to have a docker-compose file that we can manage to have a full dev environment deployed locally (with persistent volumes when necessary). We can take inspiration from this: https://github.com/harvard-lts/drs-import-management-service/blob/main/docker-compose-dev.yml

What kind of user is the feature intended for?

Developers

What inspired the request?

What existing behavior do you want changed?

Dataverse development environment setup

Any brand new behavior do you want to add to Dataverse?

No, should be the same.

Any related open or closed issues to this feature request?

Metadata

Metadata

Assignees

No one assigned

    Labels

    NIH OTA: 1.7.1 (reArchitecture)7 | 1.7.1 | Research & architecture for separating backend and frontend to enable a flexible, sca...pm.GREI-d-1.7.1NIH, yr1, aim7, task1: Research & architecture for separating backend and frontend

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions