browsertrix/docs/develop/local-dev-setup.md
sua yoo 4f36a94bc6
Update local dev docs (#1246)
Suggest uncommenting backend_image and frontend_image to use local images
2023-10-03 17:05:21 -04:00

137 lines
5.2 KiB
Markdown

# Setup for Local Development
## Installation
First, see our [Local Deployment guide](../deploy/local.md#installing-kubernetes) for instructions on how to install the latest release with [Kubernetes](https://kubernetes.io/) with [Helm 3](https://v3.helm.sh/).
## Local Dev Configuration
The local deployment guide explains how to deploy Browsertrix Cloud with latest published images.
However, if you are developing locally, you will need to use your local images instead.
We recommend the following setup:
1. Copy the provided `./chart/examples/local-config.yaml` Helm configuration file to a separate file `local.yaml`,
so that local changes to it will not be accidentally committed to git. From the root directory:
```sh
cp ./chart/examples/local-config.yaml ./chart/local.yaml
```
2. Uncomment `backend_image`, `frontend_image`, and pull policies in `./chart/local.yaml`, which will ensure the local images are used:
```yaml
backend_image: docker.io/webrecorder/browsertrix-backend:latest
frontend_image: docker.io/webrecorder/browsertrix-frontend:latest
backend_pull_policy: 'Never'
frontend_pull_policy: 'Never'
```
??? info "MicroK8S"
For microk8s, the pull policies actually need to be set to `IfNotPresent` instead of `Never`:
```yaml
backend_pull_policy: 'IfNotPresent'
frontend_pull_policy: 'IfNotPresent'
```
This will ensure images are pulled from the MicroK8S registry (configured in next section).
3. Build the local backend and frontend images. The exact process depends on the Kubernetes environment you've selected in your initial deployment. Environment specific build instructions are as follows:
??? info "Docker Desktop"
Rebuild the local images by running `./scripts/build-backend.sh` and/or `./scripts/build-frontend.sh` scripts to build the images in the local Docker.
??? info "MicroK8S"
MicroK8s uses its own container registry, running on port 32000.
1. Ensure the registry add-on is enabled by running `microk8s enable registry`
2. Set `export REGISTRY=localhost:32000/` and then run `./scripts/build-backend.sh` and/or `./scripts/build-frontend.sh` to rebuild the images into the MicroK8S registry.
3. In `./chart/local.yaml`, also uncomment the following lines to use the local images:
```yaml
backend_image: "localhost:32000/webrecorder/browsertrix-backend:latest"
frontend_image: "localhost:32000/webrecorder/browsertrix-frontend:latest"
```
??? info "Minikube"
Minikube comes with its own image builder to update the images used in Minikube.
To build the backend image, run:
```shell
minikube image build -t webrecorder/browsertrix-backend:latest ./backend
```
To build a local frontend image, run:
```shell
minikube image build -t webrecorder/browsertrix-frontend:latest ./frontend
```
??? info "K3S"
K3S uses `containerd` by default. To use local images, they need to be imported after rebuilding.
1. Rebuild the images with Docker by running by running `./scripts/build-backend.sh` and/or `./scripts/build-frontend.sh` scripts. (Requires Docker to be installed as well).
2. Serializer the images to .tar:
```shell
docker save webrecorder/browsertrix-backend:latest > ./backend.tar
docker save webrecorder/browsertrix-frontend:latest > ./frontend.tar
```
3. Import images into k3s containerd:
```shell
k3s ctr images import --base-name webrecorder/browsertrix-backend:latest ./backend.tar
k3s ctr images import --base-name webrecorder/browsertrix-frontend:latest ./frontend.tar
```
4. If you'd like to change other options, you can uncomment them as needed in `./chart/local.yaml`
or add additional overrides from `./chart/values.yaml`
For example, to set a superuser email to `my_super_user_email@example.com` and password to `MySecretPassword!`, uncomment that block and set:
```yaml
superuser:
# set this to enable a superuser admin
email: my_super_user_email@example.com
# optional: if not set, automatically generated
# change or remove this
password: MySecretPassword!
```
5. Once the images have been built and config changes made in `./chart/local.yaml`,
the cluster can be re-deployed by running:
```sh
helm upgrade --install -f ./chart/values.yaml \
-f ./chart/local.yaml btrix ./chart/
```
??? info "MicroK8S"
If using microk8s, the commend will be:
```sh
microk8s helm3 upgrade --install -f ./chart/values.yaml -f ./chart/local.yaml btrix ./chart/
```
Refer back to the [Local Development guide](../deploy/local.md#waiting-for-cluster-to-start) for additional information on running and debugging your local cluster.
## Update the Images
After making any changes to backend code (in `./backend`) or frontend code (in `./frontend`), you'll need to rebuild the images as specified above, before running `helm upgrade ...` to re-deploy.
Changes to settings in `./chart/local.yaml` can be deployed with `helm upgrade ...` directly.
## Deploying Frontend Only
If you are just making changes to the frontend, you can also [deploy the frontend separately](frontend-dev.md) using a dev server for quicker iteration.