{"id":21496513,"url":"https://github.com/mlibrary/aspace-containerization","last_synced_at":"2026-02-27T12:19:22.719Z","repository":{"id":160368198,"uuid":"626095010","full_name":"mlibrary/aspace-containerization","owner":"mlibrary","description":"Containerization of ArchivesSpace for Kubernetes deployment","archived":false,"fork":false,"pushed_at":"2026-02-17T19:35:18.000Z","size":192,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-02-18T00:53:17.718Z","etag":null,"topics":["archivesspace"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlibrary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-04-10T19:36:31.000Z","updated_at":"2026-02-17T19:35:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"cf0dd32e-5d62-43fb-bc0f-d0b5bb021337","html_url":"https://github.com/mlibrary/aspace-containerization","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mlibrary/aspace-containerization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibrary%2Faspace-containerization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibrary%2Faspace-containerization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibrary%2Faspace-containerization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibrary%2Faspace-containerization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlibrary","download_url":"https://codeload.github.com/mlibrary/aspace-containerization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlibrary%2Faspace-containerization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29894478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T12:09:13.686Z","status":"ssl_error","status_checked_at":"2026-02-27T12:09:13.282Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archivesspace"],"created_at":"2024-11-23T16:16:52.150Z","updated_at":"2026-02-27T12:19:22.674Z","avatar_url":"https://github.com/mlibrary.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aspace-containerization\nContainerization of ArchivesSpace for Kubernetes deployment\n\n## GitHub Workflows\n| Workflow                  | YAML                         | Image       |\n|---------------------------|------------------------------|-------------|\n| Build app image           | build-app-image.yml          | aspace-app  |\n| Build solr image          | build-solr-image.yml         | aspace-solr |\n| Delete old workflow runs  | delete-old-workflow-runs.yml | n/a         |\n\n## Running Locally\n### Configure Environment\nThe images are configured through environment variables. The docker compose yaml file expects `.env` files to exist in the `app` and `db` directories. Copy the `env.example` file to `.env` in each of the directories.\n```shell\ncp ./app/env.example ./app/.env\ncp ./db/env.example ./db/.env\n```\n### Build Images\n```shell\ndocker-compose build --build-arg ASPACE_VERSION=v3.4.1\n```\nNOTE: `ASPACE_VERSION=latest` is the default but `v3.4.1` is known to work with this containerization a.k.a. newer versions of ArcivhesSpace may require changes to the Dockerfiles and/or configuration files.\n\n\n### Launch Application\n```shell\ndocker-compose up -d\n```\nThe app container may initial exit because the db and/or solr wasn't responding fast enough (ye olde start up race condition).  If that happens just chill for a bit and then restart the app:\n```shell\ndocker-compose restart app\n```\n  The first time it starts, the system will take a minute or so to start up. Once it is ready, confirm that ArchivesSpace is running correctly by accessing the following URLs in your browser:\n\n| URL                                                                                                      | Service                                                  |\n|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------|\n| [http://localhost:8080/](http://localhost:8080/)                                                         | the staff interface                                      |\n| [http://localhost:8081/](http://localhost:8081/)                                                         | the public interface                                     |\n| [http://localhost:8082/](http://localhost:8082/)                                                         | the [OAI-PMH](https://www.openarchives.org/pmh/) server  |\n| [http://localhost:8089/](http://localhost:8089/)                                                         | the backend                                              |\n| [~~http://localhost:8090/~~](http://localhost:8090/)                                                     | ~~the internal Solr admin console~~                      |\n| [http://localhost:8091/aspace-indexer/](http://localhost:8091/aspace-indexer/)                           | the indexer                                              |\n| [http://localhost:8888/archivesspace/api/](http://localhost:8888/archivesspace/api/)                     | the API documentation                                    |\n| [http://localhost:8983/solr/#/](http://localhost:8983/solr/#/)                                           | the external Solr admin console                          |\n\nTo start using the Staff interface application, log in using the adminstrator account:\n* Username: admin\n* Password: admin\n\nThen, you can create a new repository by selecting “System” -\u003e “Manage repositories” at the top right hand side of the screen. From the “System” menu, you can perform a variety of administrative tasks, such as creating and modifying user accounts. Be sure to change the “admin” user’s password at this time.\n### List all environment variables\n```shell\ndocker-compose exec -- app env\ndocker-compose exec -- db env\ndocker-compose exec -- solr env\n```\n### Bring it all down and up again\n```shell\ndocker-compose down\ndocker-compose up -d\n```\nSince docker-compose.yml mapping app data, db data, and solr data to volumes data is not lost between the docker ups and downs. If you wish to start from a clean slate just bring down, remove the volumes, and bring it back up again.\n```shell\ndocker-compose down\ndocker volume ls\ndocker volume prune --all\ndocker volume ls\ndocker-compose up -d\n```\n## Running other instances locally\nThe containerization work within this repository is designed to serve three stakeholder groups,\neach of which require different plugins and configuration. To accomodate these differences,\nwe have created separate `Dockerfile`s -- all of which build upon the base `app/Dockerfile` -- and\nconfiguration files to help properly set up these instances. These artifacts are located under\n[`app/instances`](/app/instances/).\n\nThe separate instances can also be built and run locally using `instances.yaml`.\nTo build and run one of these versions, do the following:\n1) Build the base `app` and `solr` images using `compose.yaml`, as described under **Build Images** above.\n2) Build the service you want to run, e.g.\n    ```sh\n    docker compose -f instances.yaml build spcoll\n    ```\n3) Start up the `db`, `solr`, and stakeholder-specfic service. The latter is likely to fail because\n  of ye-old race condition mentioned in **Launch Application**.\n    ```sh\n    docker compose -f instances.yaml up -d db solr spcoll\n    ```\n4) Re-start the stakeholder-specfic service.\n    ```sh\n    docker compose -f instances.yaml restart spcoll\n    ```\nBecause the `instances.yaml` services depend on the `db` and `solr` services from `compose.yaml`,\nyou may need to clear out volumes if you've previously run the application using `compose.yaml`.\nNote however that the stakeholder-specific services use their own log and data volumes.\n```sh\ndocker compose -f instances.yaml down\ndocker volume prune --all\n```\n\n## Volumes\n| Volume                             | Container | Mount               |\n|------------------------------------|-----------|---------------------|\n| aspace-containerization_app-data   | app       | /archivesspace/data |\n| aspace-containerization_app-logs   | app       | /archivesspace/logs |\n| aspace-containerization_db-data    | db        | /var/lib/mysql      |\n| aspace-containerization_solr-data  | solr      | /var/solr           |\n## [ArchivesSpace technical documentation](https://archivesspace.github.io/tech-docs/)\nHighlights\n* [Configuring ArchivesSpace](https://archivesspace.github.io/tech-docs/customization/configuration.html)\n* [Serving ArchivesSpace over subdomains](https://archivesspace.github.io/tech-docs/provisioning/domains.html)\n* [Running ArchivesSpace under a prefix](https://archivesspace.github.io/tech-docs/provisioning/prefix.html)\n* [Serving ArchivesSpace user-facing applications over HTTPS](https://archivesspace.github.io/tech-docs/provisioning/https.html)\n* [Application monitoring with New Relic](https://archivesspace.github.io/tech-docs/provisioning/newrelic.html)\n## [Hello World Plug-in](https://github.com/archivesspace/archivesspace/blob/82c4603fe22bf0fd06043974478d4caf26e1c646/plugins/hello_world/README.md)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlibrary%2Faspace-containerization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlibrary%2Faspace-containerization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlibrary%2Faspace-containerization/lists"}