{"id":19466875,"url":"https://github.com/digio/orchestration-assessment","last_synced_at":"2025-10-18T13:09:17.087Z","repository":{"id":185805233,"uuid":"613896873","full_name":"digio/orchestration-assessment","owner":"digio","description":"Proof of concept  project for the Digio orchestration assessment held in 2023","archived":false,"fork":false,"pushed_at":"2023-03-14T14:00:12.000Z","size":7404,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-08T04:14:01.495Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/digio.png","metadata":{"files":{"readme":"README.CONDUCTOR.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-14T13:43:52.000Z","updated_at":"2023-03-15T05:16:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"b75668ae-951c-42e4-a68a-5acdb8c800f0","html_url":"https://github.com/digio/orchestration-assessment","commit_stats":null,"previous_names":["digio/orchestration-assessment"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digio%2Forchestration-assessment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digio%2Forchestration-assessment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digio%2Forchestration-assessment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digio%2Forchestration-assessment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/digio","download_url":"https://codeload.github.com/digio/orchestration-assessment/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240680749,"owners_count":19840301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T18:31:17.318Z","updated_at":"2025-10-18T13:09:12.024Z","avatar_url":"https://github.com/digio.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"This Readme is specific for running Conductor in this PoC project.\n\n# Conductor\n\nThis PoC has a few elements that are required to execute workflows in Conductor:\n\n* ElasticSearch or OpenSearch for data indexing\n* PostgreSQL for data persistence (optional)\n* Conductor Server build with PostgreSQL connector\n* Conductor UI\n* Demo Microservices app\n\nOnce running, the Conductor PoC will have the following components exposed:\n\n* Conductor API: http://localhost:8080/api/\n* Conductor UI: http://localhost:5000/\n* Conductor Swagger: http://localhost:8080/swagger-ui/index.html?configUrl=/api-docs/swagger-config#/\n* Microservices App: http://localhost:4000/ \n\nTo better understand the Conductor PoC, please see the third blog in our blog series: LINK TBD. \n\n## Getting Started\n\n### Prerequisites\n\n* Local Docker (e.g. Docker Desktop or Rancher Desktop)\n* An active [Mailtrap.io](https://mailtrap.io) account\n\n### Running the Conductor PoC\n\nThe simplest way to get the demo PoC up and running is to use the all-in-one docker compose file called `docker-compose-conductor.yml`, which will start all required components for the PoC, including the Microservices App and Conductor itself (it will clone Conductor in the container). See [All-in-one Docker Compose File](#all-in-one-docker-compose-file) section below.\n\n### Developing the Conductor PoC\n\nFor dev purposes, it may be easier to run Conductor and the Microservices App separately. See [Running Conductor and Microservices App Separately](#running-conductor-and-microservices-app-separately) section below.\n\n---\n\n## All-in-one Docker Compose File\n\n**1. Build the container** with required components:\n\n```bash\n$ docker compose -f ./docker-compose-conductor.yml build\n```\n\n** If you encounter errors, please see the [potential issues](#potential-issues) section below.\n\n**2. Start the container**. \n\n**Make sure** to first have your Mailtrap.io credentials set as environment variables either in your terminal or in the `.env` file. For more information refer to `\"Mailtrap\"` section in the `README.MICROSERVICES_APP.md`.\n\nTo start in detached mode (without logs), run:\n\n```bash\n$ docker compose -f docker-compose-conductor.yml up -d\n```\n\nOr, to start in foreground (in order to see the logs), run:\n\n```bash\n$ docker compose -f docker-compose-conductor.yml up\n```\n\n** For the first time, it is recommended to run the containers in the foreground where you can see the logs and any errors. Once you know everything is working, you can use detached mode, where you can free up your command line for other commands by running docker compose up with the `-d` option.\n\n**3. Populate Conductor** with the required definitions for the PoC:\n\n```bash\n$ cd conductor/utils\n$ . seed_conductor.sh\n```\n\n** This needs to only happen once at the start, or if you completely destroy the container images from your local machine. For further instructions on how to populate Conductor refer to: `conductor/utils/README.md`.\n\n**4. Start a new workflow execution** by visiting the Microservices App and submitting the credit application form at http://localhost:4000. You can monitor the workflow execution in the Conductor UI at http://localhost:5000, under the **Executions** tab.\n\n---\n\n## Running Conductor and the Microservices App Separately\n\nYou may want to run Conductor separate to the Microservices App when you are developing.\n\nTo get Conductor up and running without using the pre-made all-in-one docker compose file mentioned above, you will need to run the Conductor container according to Conductor documentation: [Running in a container](https://conductor.netflix.com/gettingstarted/docker.html). \n\n### 1. Clone the Conductor Repository\n\n```bash\n$ git clone https://github.com/Netflix/conductor.git\n```\n\n### 2. Fix the Docker Compose File\n\nBefore starting the Conductor service, you'll need to make a few changes to the `docker/docker-compose.yml` config within the Conductor repository:\n\n1. If you are using an M1 chip Mac, you will need to add `platform: \"linux/amd64\"` under the `elasticsearch` service to the docker compose file:\n   ```\n   elasticsearch:\n    platform: \"linux/amd64\"\n   ```\n2. To allow the Microservices App to recognise the Conductor server, they must have a shared container network. Add the `conductor-poc-network` network to the Conductor docker compose file:\n   ```\n   conductor-server:\n     networks:\n      - internal\n      - conductor-poc-network\n   networks:\n    conductor-poc-network:\n      name: conductor-poc-network \n      external: true \n   ```\n3. To fix ElasticSearch from timing out too quickly and thus failing to compose up or down, increase the `retries` property under `healthcheck` in the Conductor `docker/docker-compose.yaml` file for the `elasticsearch` service from `12` to `24` or more.\n4. To enable persistence via PostgreSQL:\n   - you will need to add the contents of `docker/docker-compose-postgres.yaml` to `docker/docker-compose.yaml`.\n   - in the `server/build.gradle` file, you will need to add the following to the `dependencies` section:\n      ```groovy\n      runtimeOnly 'com.netflix.conductor:conductor-postgres-persistence:3.13.3'\n      ```\n   - then rebuild the Docker image for Conductor server:\n     ```bash\n     $ cd docker\n     $ docker compose build conductor-server\n     ```\n\n### 3. Build and Start the Container\n\nFrom the root of the Conductor repository:\n\n```bash\n$ cd docker\n$ docker compose build\n\n# Run in detached mode:\n$ docker compose up -d\n\n# OR, run in foreground (to see logs):\n$ docker compose up\n```\n\n** For the first time, it is recommended to run the containers in the foreground where you can see the logs and any errors. Once you know everything is working, you can use detached mode, where you can free up your command line for other commands by running docker compose up with the `-d` option.\n\n** If you still encounter errors, please see the [potential issues](#potential-issues) section below.\n\n### 4. Populate Conductor\n\nTo populate Conductor with the required definitions for the PoC, you will need to run the following from the `orchestration-assessment` repository root:\n\n```bash\n$ cd conductor/utils\n$ . seed_conductor.sh\n```\n\nFor further instructions on how to populate Conductor refer to: `conductor/utils/README.md`.\n\n### 5. Run the Microservices App\n\nOnce you have Conductor running and all definitions populated in Conductor, you will need to set the `ORCHESTRATION_TOOL` environment variable to `conductor` and set your [Mailtrap.io](https://mailtrap.io) credentials. You can set the environment variables either in your terminal or in the `.env` file. For more information refer to `\"Mailtrap\"` and `\"Environment Variables\"` sections in the `README.MICROSERVICES_APP.md`.\n\nTo run the Microservices App, you will need to run the following from the `orchestration-assessment` repository root:\n\n```bash\n$ ORCHESTRATION_TOOL=conductor \\\n  POC_EMAIL_USER=\u003cmailtrap_username\u003e \\\n  POC_EMAIL_PASS=\u003cmailtrap_password\u003e \\\n  docker compose up\n```\n\n### 6. Run the Demo\n\nTo start the Demo, go to the web app site at http://localhost:4000/ and submit a new credit card application form. That kicks off your Conductor workflow execution which you can view in the Conductor UI at http://localhost:5000, under the **Executions** tab!\n\n**Note** that you can kick off the workflow by also:\n* sending a POST request to the server. Have a look at sample calls in the Postman collection. First make sure you generate the collection and export it as per the Reade at `postman/README.md`.\n* clicking the run chevron start button the Conductor UI at under the `Workbench` tab.\n\n---\n\n## Potential issues\n\n### Apple Silicon Mac\nIf you're running an Apple Silicon Mac (M1, M2, etc) you will have to\nexplicitly set the container image platform for the Elasticsearch\nused by Conductor to `linux/amd64` as there is no ARM64 image available\nfor Elasticsearch 6.8.\nIn the conductor repository, you need to edit the\nfile `docker/docker-compose.yaml` and find the line\n`image: elasticsearch:6.8.15`. Just before or after this line, with the\nsame indentation level, add `platform: linux/amd64` and save the file.\n\nFurthermore in the `environment:` list you will need to add \u003cbr/\u003e\n`- bootstrap.system_call_filter=false`\u003cbr/\u003e\nin cases where you see an exception on ElasticSearch startup.\n\n### macOS 13 and newer\nFrom macOS 13 onwards, Apple has AirPlay Receiver (from Control Center) listening on port 5000, which creates a port conflict with the conductor-ui. AirPlay Receiver is used for sharing Audio and Video from other Apple devices to the Mac. This feature is not used very often and therefore can be disabled to free up port 5000. But do so at your own risk, in case you still need this service on your Mac.\n\nTo disable AirPlay Receiver: Open `System Preferences`, search and click on `AirDrop` and then turn off\n`AirPlay Receiver`.\n\n### Elasticsearch timeout on startup\nThe docker compose startup of Elasticsearch can fail sometimes as it\ncan take a while and Docker will mark it as unhealthy after 1 minute\nand abort the process.\n\nIf this happens, consider to increase the `healthcheck -\u003e retries` property\nin the Conductor `docker/docker-compose.yaml` file for the elasticsearch service from `12` to `24` or more.\n\n### Using OpenSearch over ElasticSearch\nConsidering ElasticSearch has the above issues, OpenSearch can be used as an\nalternative. OpenSearch is an in-place replacement for ElasticSearch and is\nfully API-compatible.\nSee the `docker-compose-conductor.uml` in this `orchestration-assessment` repository for more details on how to set it up in Conductor's `docker/docker-compose.yaml`, or just run our All-in-one docker file instead where all issues have been resolved.\n\n### Error `vm.max_map_count`\n\nDepending on the current Docker VM configuration the error\u003cbr/\u003e`max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]`\u003cbr/\u003ecan prevent successful startup of the search pods.\n\nTo increase that setting for the Docker VM use the `rdctl` command line tool\u003cbr/\u003e`rdctl shell sudo sysctl -w vm.max_map_count=262144`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigio%2Forchestration-assessment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdigio%2Forchestration-assessment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigio%2Forchestration-assessment/lists"}