{"id":49621766,"url":"https://github.com/konveyor/tackle-container-advisor","last_synced_at":"2026-05-05T03:06:56.158Z","repository":{"id":38719549,"uuid":"376870152","full_name":"konveyor/tackle-container-advisor","owner":"konveyor","description":"Recommends containerization plan for legacy applications.","archived":false,"fork":false,"pushed_at":"2023-07-12T19:38:50.000Z","size":19898,"stargazers_count":27,"open_issues_count":29,"forks_count":24,"subscribers_count":14,"default_branch":"main","last_synced_at":"2023-07-12T20:31:40.831Z","etag":null,"topics":["container","image","modernization"],"latest_commit_sha":null,"homepage":"https://konveyor.github.io/tackle-container-advisor-docs/","language":"Python","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/konveyor.png","metadata":{"files":{"readme":"README.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}},"created_at":"2021-06-14T15:24:27.000Z","updated_at":"2023-07-06T02:28:40.000Z","dependencies_parsed_at":"2023-02-09T12:16:51.086Z","dependency_job_id":null,"html_url":"https://github.com/konveyor/tackle-container-advisor","commit_stats":null,"previous_names":[],"tags_count":3,"template":null,"template_full_name":null,"purl":"pkg:github/konveyor/tackle-container-advisor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Ftackle-container-advisor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Ftackle-container-advisor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Ftackle-container-advisor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Ftackle-container-advisor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/konveyor","download_url":"https://codeload.github.com/konveyor/tackle-container-advisor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konveyor%2Ftackle-container-advisor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32633446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["container","image","modernization"],"created_at":"2026-05-05T03:06:46.185Z","updated_at":"2026-05-05T03:06:56.146Z","avatar_url":"https://github.com/konveyor.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![example branch parameter](https://github.com/lamwassi/tackle-container-advisor/actions/workflows/tca-unit-test.yml/badge.svg?branch=code_base_impro)\n\n\n# Tackle Container Advisor (TCA)\n## Table of Contents\n\n### Usage\n1. [TCA Pipeline](#TCA-Pipeline)\n2. [Run TCA](https://konveyor.github.io/tackle-container-advisor-docs/docs/setup/)\n3. [API description](https://konveyor.github.io/tackle-container-advisor-docs/docs/apis)\n4. [References](https://konveyor.github.io/tackle-container-advisor-docs/docs/publications/)\n\n### Development\n1. [Knowledge Base](https://konveyor.github.io/tackle-container-advisor-docs/docs/kg/)\n2. [Knowledge Base Utilities](https://konveyor.github.io/tackle-container-advisor-docs/docs/kgutils/)\n3. [Entity standardizer](https://konveyor.github.io/tackle-container-advisor-docs/docs/standardizer/)\n4. [Developer Guide](https://konveyor.github.io/tackle-container-advisor-docs/docs/development/)\n\n## Purpose\nTCA provides APIs to standardize natural language description of technology stack components, cluster a portfolio of technology stacks into similar technology stack groups, match technology stacks to docker, openshift or operator catalog images. \n```\n1. App1: rhel, db2, java, tomcat\n2. App2: .net, java, oracle db\n3. App3: dot net, java, oracle dbms\n```\n\nTCA takes the following steps to recommend the containerization.\n\n**Standardize**: Standardize natural language inputs to relevant named entities of technology stacks present in our knowledge base. For details on the knowledge base please check the *db* folder. For example, the inputs in *App1,App2,App3* get mapped as the following named entities.\n\n```\n1. App1: rhel: RedHat Enterprise Linux, db2: DB2, java: Java, tomcat: Apache Tomcat\n2. App2: .net: .NET, java: Java, oracle db: Oracle DB\n3. App3: dot net: .NET, java: Java, oracle dbms: Oracle DB\n```\n\n**Clustering**: Cluster the standardized technology stack components into groups of similar technology stacks. For example, the standardized technology stacks for *App1,App2,App3* get clustered into the two technology stack clusters.\n\n```\n1. Cluster1: {App1}\n2. Cluster2: {App2, App3}\n```\n\n**Containerize**: Determines whether a technology stack is fully containerizable, partially containerizable or not containerizableat all. If a technology stack is recommended as fully or partially containerizable, it also generates container images based on DockerHub or Openshift image catalogs. It is also possible to provide custom user-defined catalogs for matching to catalog images. For example, if a user decides to generate DockerHub related images, then TCA generates the following images.\n\n```\n1. Cluster1: tomcat|https://hub.docker.com/_/tomcats\n2. Cluster2: db2|https://hub.docker.com/r/ibmcom/db2\n```\n\nFor OpenShift, TCA generates the following images.\n\n```\n1. Cluster1: tomcat|https://access.redhat.com/containers/#/registry.access.redhat.com/jboss-webserver-3/webserver31-tomcat8-openshift\n2. Cluster2: db2|https://access.redhat.com/containers/#/cp.stg.icr.io/cp/ftm/base/ftm-db2-base\n```\n\n## TCA Pipeline\n\n![TCA Pipeline](images/tca_pipeline.png)\n\nThe pipeline ingests raw inputs from clients data and standardizes the data to generate named entities and versions. For standardizing or normalizing raw inputs we use a tf-idf similarity based approach. To find container images we represent images in terms of named entities as well. The normalized representation helps to match legacy applications with container images to suggest the best possible recommendations.\n\n## Code of Conduct\n\nRefer to Konveyor's [Code of Conduct page](https://github.com/konveyor/community/blob/main/CODE_OF_CONDUCT.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonveyor%2Ftackle-container-advisor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonveyor%2Ftackle-container-advisor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonveyor%2Ftackle-container-advisor/lists"}