Upgrading from v0.16.0 to v0.17.0 is fairly straightforward, and only requires runing postgres migrations. This guide will walk you through the process of upgrading your Dittofeed instance.

Upgrade Dittofeed in Docker Compose

Step 1: Setting Up Your docker-compose.lite.yaml File

First, add the environment variable BOOTSTRAP: "false" to your docker-compose.lite.yaml file, if it isn’t set already. This will prevent your lite instance from running bootstrap operations when it restarts.

Next, make sure you have an admin-cli instance specified in our docker-compose.lite.yaml file. We’ll be using this service to run our migrations.

Your docker-compose.lite.yaml file should look something like this:

...
services:
  lite:
    image: dittofeed/dittofeed-lite:${IMAGE_TAG:-v0.16.0}
    restart: always
    ports:
      - "3000:3000"
    depends_on:
      - postgres
      - temporal
      - clickhouse-server
    environment:
      <<: *backend-app-env
      # uncomment while upgrading dittofeed
      BOOTSTRAP: "false"
    env_file:
      - .env
    networks:
      - dittofeed-network-lite
  # useful for upgrading dittofeed
  admin-cli:
    image: dittofeed/dittofeed-lite:${IMAGE_TAG:-v0.17.0}
    entrypoint: []
    profiles: ["admin-cli"]
    command: tail -f /dev/null
    tty: true
    depends_on:
      - postgres
      - temporal
      - clickhouse-server
    environment:
      <<: *backend-app-env
    env_file:
      - .env
    networks:
      - dittofeed-network-lite
...

Step 2: Start the admin-cli Service

Next, run the following command to start your admin-cli service:

docker compose --profile admin-cli -f docker-compose.lite.yaml up admin-cli -d

Step 3: Run the Migrations

Run Dittofeed’s database migrations before deploying the new version of Dittofeed:

./scripts/admin-lite.sh prisma migrate deploy

Step 4: Upgrade Your docker-compose.lite.yaml File

Upgrade the version in your docker-compose.lite.yaml file to v0.17.0:

...
services:
  lite:
    image: dittofeed/dittofeed-lite:${IMAGE_TAG:-v0.17.0}
...

Now restart your lite instance:

docker compose -f docker-compose.lite.yaml up lite -d --force-recreate

Step 5: Stop the admin-cli Service

Finally, stop the admin-cli service:

docker compose --profile admin-cli -f docker-compose.lite.yaml stop admin-cli

Upgrade Dittofeed in Kubernetes

Step 1: Setting Up Your dittofeed values.yaml File

First, add the environment variable BOOTSTRAP: "false" to your values.yaml file for the dittofeed helm chart, if it isn’t set already. This will prevent your lite instance from running bootstrap operations when it restarts.

values.yaml
env:
  - name: BOOTSTRAP
    value: "false"

Step 2: Install the dittofeed-admin-cli Chart

Next, run the following command to install the dittofeed-admin-cli chart:

helm upgrade --install dittofeed-admin-cli ./dittofeed/helm-charts/dittofeed-admin-cli

Make sure that the dittofeed-admin-cli pod is running the version of the dittofeed-admin-cli chart that you’re upgrading to.

chart.yaml
appVersion: "v0.17.0"

Or set the tag in your values.yaml file to v0.17.0:

values.yaml
image:
  tag: v0.17.0

Step 3: Run the Migrations

Run Dittofeed’s database migrations before deploying the new version of Dittofeed:

Exec into the dittofeed-admin-cli pod:

kubectl exec -it deployment/dittofeed-admin-cli -- /bin/bash

Run the migrations:

./admin.sh prisma migrate deploy

Step 4: Upgrade the Dittofeed Chart

Update the tag in your values.yaml file to v0.17.0:

values.yaml
image:
  tag: v0.17.0

Upgrade the dittofeed chart:

helm upgrade --install dittofeed ./dittofeed/helm-charts/dittofeed

Step 5: Uninstall the dittofeed-admin-cli Helm Chart

Finally, uninstall the dittofeed-admin-cli deployment:

helm uninstall dittofeed-admin-cli