triggerdotdev / trigger.dev

Trigger.dev is the open source background jobs platform for TypeScript.

Home Page:https://trigger.dev/changelog

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bug: Error when starting trigger.dev with docker-compose connecting to supabase project

jordigiam opened this issue · comments

Provide environment information

  System:
    OS: macOS 14.1
    CPU: (8) arm64 Apple M3
    Memory: 2.66 GB / 24.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.16.0 - ~/.nvm/versions/node/v18.16.0/bin/node
    Yarn: 1.22.21 - /opt/homebrew/bin/yarn
    npm: 9.5.1 - ~/.nvm/versions/node/v18.16.0/bin/npm
    pnpm: 8.8.0 - ~/.nvm/versions/node/v18.16.0/bin/pnpm
    bun: 1.1.4 - ~/.nvm/versions/node/v18.16.0/bin/bun

Describe the bug

When trying to start the Trigger.dev service using Docker and docker-compose, an error occurs during the deployment of Prisma migrations. The error mentions that there are failed migrations and missing columns in the database.

Reproduction repo

No reproduction repository is available, but it can be reproduced using the following configuration files and commands.

To reproduce

  1. Run the following command to pull the Docker image:

docker pull ghcr.io/triggerdotdev/trigger.dev:main

  1. Use the following docker-compose.yml file using valids params for POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB, DATABASE_HOST:
version: "3.8"

services:
  triggerdotdev:
    image: ghcr.io/triggerdotdev/trigger.dev:main
    container_name: triggerdotdev
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - 3030:3030
  1. Use the following .env file:
LOGIN_ORIGIN=http://localhost:3030
APP_ORIGIN=http://localhost:3030
PORT=3030
REMIX_APP_PORT=3030

# Encryption key that will be used to encrypt magic link tokens
MAGIC_LINK_SECRET=e7bbbffd751b749f4710d529c6964d5d
# Encryption key that will be used to encrypt session cookies
SESSION_SECRET=7acbf2cf1bdb5b43b306bafa03780f9a
# Must be a random 16 byte hex string. You can generate an encryption key by running `openssl rand -hex 16` in your terminal
# WARNING: YOU MUST SET THIS TO A RANDOM VALUE IN PRODUCTION
ENCRYPTION_KEY=8c8e8cec45aeeaf0e01984350f73e1b9

POSTGRES_USER=******
POSTGRES_PASSWORD=******
POSTGRES_DB=******
DATABASE_HOST=******
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}?schema=triggerdotdev

# This sets the URL used for direct connections to the database and should only be needed in limited circumstances
# See: https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#fields:~:text=the%20shadow%20database.-,directUrl,-No
DIRECT_URL=${DATABASE_URL}

# Github sign in OAUTH client id and secret (Optional)
# AUTH_GITHUB_CLIENT_ID=
# AUTH_GITHUB_CLIENT_SECRET=

# E-mail settings, ensure the FROM_EMAIL matches what you setup with Resend.com.
# If these are not set, emails will be printed to the console.
# FROM_EMAIL=
# REPLY_TO_EMAIL=
# RESEND_API_KEY=

NODE_ENV=production
RUNTIME_PLATFORM=docker-compose
  1. Run the command:

docker-compose up

Additional information

triggerdotdev  | + [ -n ******]
triggerdotdev  | + scripts/wait-for-it.sh  ****** -- echo database is up
triggerdotdev  | Unknown argument: ******
triggerdotdev  | Usage:
triggerdotdev  |   scripts/wait-for-it.sh host:port|url [-t timeout] [-- command args]
triggerdotdev  |   -q | --quiet                        Do not output any status messages
triggerdotdev  |   -t TIMEOUT | --timeout=timeout      Timeout in seconds, zero for no timeout
triggerdotdev  |   -- COMMAND ARGS                     Execute command with args after the test finishes
triggerdotdev  | + pnpm --filter @trigger.dev/database db:migrate:deploy
triggerdotdev  | 
triggerdotdev  | > @trigger.dev/database@0.0.1 db:migrate:deploy /triggerdotdev/packages/database
triggerdotdev  | > prisma migrate deploy
triggerdotdev  | 
triggerdotdev  | Prisma schema loaded from prisma/schema.prisma
triggerdotdev  | Datasource "db": PostgreSQL database "postgres", schema "triggerdotdev" at ******
triggerdotdev  | 
triggerdotdev  | 508 migrations found in prisma/migrations
triggerdotdev  | 
triggerdotdev  | Error: P3009
triggerdotdev  | 
triggerdotdev  | migrate found failed migrations in the target database, new migrations will not be applied. Read more about how to resolve migration issues in a production database: https://pris.ly/d/migrate-resolve
triggerdotdev  | The `20240130165343_add_composite_index_to_job_run_for_job_id_and_created_at` migration started at 2024-06-11 09:59:01.840235 UTC failed
triggerdotdev  | 
triggerdotdev  | 
triggerdotdev  | /triggerdotdev/packages/database:
triggerdotdev  |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @trigger.dev/database@0.0.1 db:migrate:deploy: `prisma migrate deploy`
triggerdotdev  | Exit status 1
triggerdotdev  | + cp packages/database/prisma/schema.prisma apps/webapp/prisma/
triggerdotdev  | + cp node_modules/@prisma/engines/libquery_engine-linux-arm64-openssl-1.1.x.so.node apps/webapp/prisma/
triggerdotdev  | + pnpm --filter webapp db:seed
triggerdotdev  | 
triggerdotdev  | > webapp@1.0.0 db:seed /triggerdotdev/apps/webapp
triggerdotdev  | > node prisma/seed.js
triggerdotdev  | 
triggerdotdev  | 🔌 setting up prisma client to postgresql://******@******/******?schema=triggerdotdev&connection_limit=10&pool_timeout=60
triggerdotdev  | 🔌 prisma client connected
triggerdotdev  | 🔌 No database replica, using the regular client
triggerdotdev  | prisma:info Starting a postgresql pool with 10 connections.
triggerdotdev  | Upserting auth method airtable.oauth2
triggerdotdev  | Upserting auth method github.oauth2
triggerdotdev  | Upserting auth method linear.oauth2
triggerdotdev  | Upserting auth method slack.oauth2Bot
triggerdotdev  | Upserting auth method slack.oauth2User
triggerdotdev  | Upserting auth method supabase-management.oauth2
triggerdotdev  | Running data migration 2023-09-27-AddStagingEnvironments
triggerdotdev  | prisma:error 
triggerdotdev  | Invalid `prisma.project.findMany()` invocation:
triggerdotdev  | 
triggerdotdev  | 
triggerdotdev  | The column `Project.deletedAt` does not exist in the current database.
triggerdotdev  | PrismaClientKnownRequestError: 
triggerdotdev  | Invalid `prisma.project.findMany()` invocation:
triggerdotdev  | 
triggerdotdev  | 
triggerdotdev  | The column `Project.deletedAt` does not exist in the current database.
triggerdotdev  |     at Cn.handleRequestError (/triggerdotdev/apps/webapp/prisma/seed.js:123:6809)
triggerdotdev  |     at Cn.handleAndLogRequestError (/triggerdotdev/apps/webapp/prisma/seed.js:123:6198)
triggerdotdev  |     at Cn.request (/triggerdotdev/apps/webapp/prisma/seed.js:123:5918)
triggerdotdev  |     at async d (/triggerdotdev/apps/webapp/prisma/seed.js:128:9968)
triggerdotdev  |     at async /triggerdotdev/apps/webapp/prisma/seed.js:632:90313
triggerdotdev  |     at async Proxy._transactionWithCallback (/triggerdotdev/apps/webapp/prisma/seed.js:128:8631)
triggerdotdev  |     at async ny (/triggerdotdev/apps/webapp/prisma/seed.js:632:90028)
triggerdotdev  |     at async iy (/triggerdotdev/apps/webapp/prisma/seed.js:632:89993)
triggerdotdev  |     at async ly (/triggerdotdev/apps/webapp/prisma/seed.js:632:90855) {
triggerdotdev  |   code: 'P2022',
triggerdotdev  |   clientVersion: '5.4.1',
triggerdotdev  |   meta: { column: 'Project.deletedAt' }
triggerdotdev  | }
triggerdotdev  | + cd /triggerdotdev/apps/webapp
triggerdotdev  | + NODE_PATH=/triggerdotdev/node_modules/.pnpm/node_modules exec dumb-init node --max-old-space-size=8192 ./build/server.js
triggerdotdev  | 🔌 setting up prisma client to postgresql://******@******/postgres?schema=triggerdotdev&connection_limit=10&pool_timeout=60
triggerdotdev  | 🔌 prisma client connected
triggerdotdev  | 🔌 No database replica, using the regular client
triggerdotdev  | 🔦 Tracer: Logger exporter enabled (sampling = 0.05)
triggerdotdev  | Could not initialize MarQS because process.env.REDIS_HOST and process.env.REDIS_PORT are required to be set. Trigger.dev v3 will not work without this.
triggerdotdev  | /triggerdotdev/apps/webapp/build/index.js:14414
triggerdotdev  |     throw new Error(
triggerdotdev  |     ^
triggerdotdev  | 
triggerdotdev  | Error: Could not initialize auto-increment counter because process.env.REDIS_HOST and process.env.REDIS_PORT are required to be set. 
triggerdotdev  |     at getAutoIncrementCounter (/triggerdotdev/apps/webapp/build/index.js:14414:11)
triggerdotdev  |     at singleton (/triggerdotdev/apps/webapp/build/index.js:3073:84)
triggerdotdev  |     at Object.<anonymous> (/triggerdotdev/apps/webapp/build/index.js:14411:27)
triggerdotdev  |     at Module._compile (node:internal/modules/cjs/loader:1376:14)
triggerdotdev  |     at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
triggerdotdev  |     at Module.load (node:internal/modules/cjs/loader:1207:32)
triggerdotdev  |     at Module._load (node:internal/modules/cjs/loader:1023:12)
triggerdotdev  |     at Module.require (node:internal/modules/cjs/loader:1235:19)
triggerdotdev  |     at require (node:internal/modules/helpers:176:18)
triggerdotdev  |     at Object.<anonymous> (/triggerdotdev/apps/webapp/build/server.js:37:15)
triggerdotdev  | 
triggerdotdev  | Node.js v20.11.1
triggerdotdev exited with code 1

This is a duplicate of #1026.

This is an annoying issue but there's a workaround in that issue which should help for now.