https://github.com/smithsonian/dpo-packrat
Data Repository and Workflow Management for 3D data captures, models, and scenes
https://github.com/smithsonian/dpo-packrat
Last synced: over 1 year ago
JSON representation
Data Repository and Workflow Management for 3D data captures, models, and scenes
- Host: GitHub
- URL: https://github.com/smithsonian/dpo-packrat
- Owner: Smithsonian
- License: apache-2.0
- Created: 2020-05-27T23:46:04.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-04-11T15:09:54.000Z (over 1 year ago)
- Last Synced: 2025-04-11T15:55:13.455Z (over 1 year ago)
- Language: TypeScript
- Size: 57.1 MB
- Stars: 11
- Watchers: 9
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dpo-packrat
Data Repository and Workflow Management for 3D data captures, models, and scenes
## Setup instructions (Development):
*Note: `.env.dev` is required and it follows `.env.template`*
#### Prerequisites:
* It is recommended to install [Volta](https://volta.sh/) which keeps node version in check. The versions can be specified in `package.json` and when switched to the directory of the project, volta automatically switches to the correct node version.
* It is also recommended to use [Yarn](https://yarnpkg.com/) as the primary package manager for Packrat.
```
cd ~
curl https://get.volta.sh | bash
volta install node
volta install yarn
```
When switching to the `dpo-packrat` repo, the node version will automatically be pinned to the correct version by volta.
#### Steps:
1. Install the dependencies *(at the root level)*. [Lerna](https://lerna.js.org/) will ensure the subdirectories’ packages are also installed.
```
yarn
```
2. Export the environment variables *(at the root level)* after `.env.dev` has been configured.
```
export $(grep -v ‘^#’ .env.dev | xargs)
```
3. Generate GraphQL and Prisma code *(in the server directory)*.
*Note: make sure to generate them whenever changes have been made to the GraphQL schemas.*
```
cd server
yarn generate
```
4. If using Docker, build the Docker images and containers *(at the root)*. If they're already available then issuing the following command would start the containers.
*Note: if building the images and containers, this process can take an upwards of 20 minutes.*
**If setting up Packrat without Docker, skip to step 9**
```
cd ..
yarn dev
```
5. Once the Docker images and containers are built, they should start in 10s-20s. The client should be reachable at `http://localhost:3000` and server should be reachable at `http://localhost:4000`, or the ports specified in `.env.dev`.
6. To follow debug logs for `client` or `server` container, run `yarn log:client` or `yarn log:server` *(at the root)*.
7. To log in and use Packrat, the database must be first initialized with data and user info *(in the server directory)*.
```
cd server
yarn initdbdock
```
8. After the database has been initialized, Solr enterprise-search needs to be indexed in order to populate the repository.
Navigate to `localhost:4000/solrindex` in the browser and wait for the result to appear. Once Solr finishes indexing, set up via Docker is complete!
*Note: sometimes a failure message will appear even upon successful indexing. Successful indexing can be seen in the server container logs and by visiting the repository and finding the newly populated entries.*
9. If setting up Packrat without Docker, compile the typescript code in a separate terminal *(for the common directory)*.
```
cd common
yarn start
```
10. Run each command in separate terminals *(at the root level)*:
**For client:**
```
yarn start:client
```
**For server:**
```
yarn start:server
```
11. Setting up Packrat without Docker gives users the flexbility to install and configure their own database and Solr caching as needed.
**Congratulations, Packrat is now ready for use!**
# Alternative docker workflow:
```
# If step 4 for building and starting the docker containers are failing, follow this alternative instead.
# Creates Devbox for packrat
yarn devbox:up
# Creates DB for devbox
yarn devbox:db
# Creates SOLR for devbox
yarn devbox:solr
# Create and Connects devbox-db, devbox-solr, and devbox to the same network
yarn devbox:network
# Drops you into shell inside the image
yarn devbox:start
```
*Note: if you get permission denied during the execution make sure to give it permission using:*
```
chmod 777 ./conf/scripts/devbox/*.sh
```
# Deployment instructions:
*Note: Make sure before you execute any script, you're root of the repository `dpo-packrat` and if you get permission denied for any script, make sure to do `chmod 777 path/to/script`. If you encounter any error then make sure to checkout Packrat server setup instruction on confluence*
## Docker images:
*Note: current supported environments are `dev` and `prod`*
1. Login into SI server
2. Pull the latest changes
```
git pull
```
*Note: repository is already cloned in `/home//dpo-packrat`*
3. Switch to the branch you want to deploy. To deploy for `dev` environment you should be on `develop` branch, for `prod` environment
```
git checkout master
```
*Note: `.env.dev` and `.env.prod` are already available*
4. Deploy using the `deploy.sh` script
```
./conf/scripts/deploy.sh prod
```
If you get `permission denied for docker` then use
```
sudo chmod 777 /var/run/docker.sock
```
If you get `Error while loading shared libraries: libz.so.1` for `docker-compose` then do the following:
```
sudo mount /tmp -o remount,exec
```
5. Wait for the images to be build/updated, then use `./conf/scripts/cleanup.sh` script to cleanup any residual docker images are left (optional)
6. Make sure nginx is active using `sudo service nginx status --no-pager`