Help getting workflows running

Im a bit confused about what im supposed to do here. Im running Retool on prem. Am i meant ot have a temporal docker container as well? Do i install that or is it meant to install during a Retool update?

Hey @rcanpolat, our docs for setting up workflows for on-premise deployment with Docker are here. Not sure which steps you've already gone through, but yes its likely that you need to update the docker-compose.yml to include the workflow specific containers.

Im still stuck on the below fault

image

In the docs it mentions using a Retool-managed cluster (im using enterprise on prem) and open up egress to the public internet on ports 443 and 7233 which i have done, i found 7233 was blocking and is now open.

It mentions ' Use docker-compose.yml as is.'

Does my docker-compose.yml look correct for enterprise on prem Retool-managed cluster ? I don't see any reference to temporal or workflows on the docker-compose.yml file or in the docker.env below that (note i've removed keys, passwords and domain from docker.env)

version: '2'
services:
  api:
    build:
      context: ./
      dockerfile: Dockerfile
    env_file: ./docker.env
    environment:
      - SERVICE_TYPE=MAIN_BACKEND
      - DB_CONNECTOR_HOST=http://db-connector
      - DB_CONNECTOR_PORT=3002
      - DB_SSH_CONNECTOR_HOST=http://db-ssh-connector
      - DB_SSH_CONNECTOR_PORT=3002
    networks:
      - frontend-network
      - backend-network
      - db-connector-network
      - db-ssh-connector-network
    depends_on:
      - postgres
      - db-connector
      - db-ssh-connector
    command: bash -c "./docker_scripts/wait-for-it.sh postgres:5432; ./docker_scripts/start_api.sh"
    links:
      - postgres
    ports:
      - '3000:3000'
    volumes:
      - ./keys:/root/.ssh
      - ssh:/retool_backend/autogen_ssh_keys

  jobs-runner:
    build:
      context: ./
      dockerfile: Dockerfile
    env_file: ./docker.env
    environment:
      - SERVICE_TYPE=JOBS_RUNNER
    networks:
      - backend-network
    depends_on:
      - postgres
    command: bash -c "chmod -R +x ./docker_scripts; sync; ./docker_scripts/wait-for-it.sh postgres:5432; ./docker_scripts/start_api.sh"
    links:
      - postgres

  db-connector:
    build:
      context: ./
      dockerfile: Dockerfile
    command: bash -c "./retool_backend"
    env_file: ./docker.env
    environment:
      - SERVICE_TYPE=DB_CONNECTOR_SERVICE
    networks:
      - db-connector-network
    restart: on-failure

  db-ssh-connector:
    build:
      context: ./
      dockerfile: Dockerfile
    command: bash -c "./docker_scripts/generate_key_pair.sh; ./retool_backend"
    env_file: ./docker.env
    environment:
      - SERVICE_TYPE=DB_SSH_CONNECTOR_SERVICE
    networks:
      - db-ssh-connector-network
    volumes:
      - ssh:/retool_backend/autogen_ssh_keys
      - ./keys:/retool_backend/keys
    restart: on-failure

  # Retool's storage database. See these docs to migrate to an externally hosted database: https://docs.retool.com/docs/configuring-retools-storage-database
  postgres:
    image: 'postgres:9.6.5'
    env_file: docker.env
    networks:
      - backend-network
      - db-connector-network
    volumes:
      - data:/var/lib/postgresql/data

  # Not required, but leave this container to use nginx for handling the frontend & SSL certification
  # Modified to nginx by Ross
  nginx:
    image: nginx:latest
    env_file: ./docker.env
    ports:
      - '80:80'
      - '443:443'
    command: [nginx-debug, "-g", "daemon off;"] # Improve error logging in the container
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./certs:/etc/nginx/certs
      - ./mediaserver:/etc/nginx/mediaserver
    links:
      - api
    depends_on:
      - api
    networks:
      - frontend-network

networks:
  frontend-network:
  backend-network:
  db-connector-network:
  db-ssh-connector-network:

volumes:
  ssh:
  data:
  user-data:

## For a complete list of all environment variables, see docs.retool.com/docs/environment-variables

## Set node environment to production
NODE_ENV=production

## Set the JWT secret for the API server
JWT_SECRET="REMOVED"

## Set and generate postgres credentials
POSTGRES_DB=hammerhead_production
POSTGRES_USER=retool_internal_user
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_PASSWORD=REMOVED

# Change 'retool1.abc.ie' to retool.gsls.ie to set up SSL properly
DOMAINS=retool1.abc.ie -> http://api:3000

## Used to create links for your users, like new user invitations and forgotten password resets
## The backend tries to guess this, but it can be incorrect if there’s a proxy in front of the website
BASE_DOMAIN=https://retool.abc.ie

## Set key to encrypt and decrypt database passwords, etc.
ENCRYPTION_KEY=REMOVED

## Google SSO configuration
# CLIENT_ID={YOUR GOOGLE CLIENT ID}

## License key
LICENSE_KEY=REMOVED

## Uncomment this line if HTTPS is not set up
COOKIE_INSECURE=false

# Extend query timeout
DBCONNECTOR_QUERY_TIMEOUT_MS=360000

7233 egress to the internet is allowed, so is 443

Found the solution. So i deployed Retool over a year ago and when i run the update script it doesn't grab all of the latest files and folders vs pulling a fresh install from the git url, i was missing a chunk of data from my docker-compose.yml and other data relating to workflows and retooldb.

Below is a side by side comparison of pulling the latest git on the left side (as of 17th Dec 2023) vs what i had in my retool-onpremise directory on the right side which was originally pulled back in Oct/Nov 2022 and gone through several './update_retool.sh' runs.

If you have the same issue i had then do a fresh install on another test machine and cross check files and folders.