All Projects → jina-ai → Jina Hub

jina-ai / Jina Hub

Licence: apache-2.0
An open-registry for hosting Jina executors via container images

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Jina Hub

Ambassador
open source Kubernetes-native API gateway for microservices built on the Envoy Proxy
Stars: ✭ 3,583 (+4946.48%)
Mutual labels:  microservice, cloud-native
Microservices Recipes A Free Gitbook
“If you are working in an organization that places lots of restrictions on how developers can do their work, then microservices may not be for you.” ― Sam Newman
Stars: ✭ 393 (+453.52%)
Mutual labels:  microservice, cloud-native
Chaos Mesh
A Chaos Engineering Platform for Kubernetes.
Stars: ✭ 4,265 (+5907.04%)
Mutual labels:  microservice, cloud-native
backk
Backk - Node.js framework for creating security-first cloud-native microservices for Kubernetes in Typescript
Stars: ✭ 14 (-80.28%)
Mutual labels:  microservice, cloud-native
Hemera
🔬 Writing reliable & fault-tolerant microservices in Node.js https://hemerajs.github.io/hemera/
Stars: ✭ 773 (+988.73%)
Mutual labels:  microservice, cloud-native
cudgx
CudgX is a cloud native intelligent operation and maintenance engine that provides service measurement, index quantification, capacity evaluation, automatic expansion and contraction. 一种提供服务度量、指标量化、容量评估、自动扩缩容等功能的云原生智能运维引擎。
Stars: ✭ 42 (-40.85%)
Mutual labels:  microservice, cloud-native
Midway Faas
🔱 A simple and lightweight serverless framework
Stars: ✭ 363 (+411.27%)
Mutual labels:  microservice, cloud-native
Spring Cloud Azure
Spring Cloud integration with Azure services
Stars: ✭ 197 (+177.46%)
Mutual labels:  microservice, cloud-native
Awesome Fenix
讨论如何构筑一套可靠的分布式大型软件系统
Stars: ✭ 530 (+646.48%)
Mutual labels:  microservice, cloud-native
Kubernetes Handbook
Kubernetes Handbook (Kubernetes指南) https://kubernetes.feisky.xyz
Stars: ✭ 4,511 (+6253.52%)
Mutual labels:  microservice, cloud-native
Krakend Ce
KrakenD Community Edition. Make your binary of KrakenD API Gateway
Stars: ✭ 245 (+245.07%)
Mutual labels:  microservice, cloud-native
Go Zero
go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
Stars: ✭ 13,156 (+18429.58%)
Mutual labels:  microservice, cloud-native
Jina
Cloud-native neural search framework for 𝙖𝙣𝙮 kind of data
Stars: ✭ 12,618 (+17671.83%)
Mutual labels:  microservice, cloud-native
Light 4j
A fast, lightweight and more productive microservices framework
Stars: ✭ 3,303 (+4552.11%)
Mutual labels:  microservice, cloud-native
Akka Management
Akka Management is a suite of tools for operating Akka Clusters.
Stars: ✭ 218 (+207.04%)
Mutual labels:  microservice, cloud-native
Apioak
Full Lifecycle Management API Gateway.
Stars: ✭ 335 (+371.83%)
Mutual labels:  microservice, cloud-native
Myapp
🖥️ How to build a Dockerized RESTful API application using Go.
Stars: ✭ 171 (+140.85%)
Mutual labels:  microservice, cloud-native
Go Chassis
a microservice framework for rapid development of micro services in Go with rich eco-system
Stars: ✭ 2,428 (+3319.72%)
Mutual labels:  microservice, cloud-native
Cloud Native Starter
Cloud Native Starter for Java/Jakarta EE based Microservices on Kubernetes and Istio
Stars: ✭ 402 (+466.2%)
Mutual labels:  microservice, cloud-native
Quarkus Microservices Poc
Very simplified shop sales system made in a microservices architecture using quarkus
Stars: ✭ 16 (-77.46%)
Mutual labels:  microservice, cloud-native

Jina banner

Jina's one-stop registry for hosting Pods and enabling easy neural search on the cloud

ContributeJobsWebsiteSlack

Use Hub Image in Flow API

# my_image_tag is the built image name

from jina import Flow
with Flow().add(uses='docker://' + my_image_tag):
    pass

Create a new Hub Pod/App

Prerequisites

  • Install Docker.
  • pip install "jina[hub]"

📦 Create a new Executor

jina hub new --type pod

It will start a wizard in CLI to guide you create your first executor. The resulted file structure should look like the following:

MyAwesomeExecutor/
├── Dockerfile
├── manifest.yml
├── config.yml
├── README.md
├── requirements.txt
├── __init__.py
└── tests/
    ├── test_MyAwesomeExecutor.py
    └── __init__.py

Link to the documentation for creating a containerized pod is here.

Create a new App

jina hub new --type app

It will start a wizard in CLI to guide you create your app.

Upload your Image to Jina Hub

Build your Docker image using our naming conventions:

jina hub build -t jinahub/type.kind.jina-image-name:image_version-jina_version <your_folder>

Push to Jina Hub:

jina hub login, then copy/paste the token into GitHub to verify your account

jina hub push jinahub/type.kind.jina-image-name:image-jina_version 

Use py_modules to import multiple files

By default, jina hub new --pod creates a Python module structure and guides you to write MyAwesomeExecutor class into __init__.py. If you have some other files that need to be imported for MyAwesomeExecutor, say helper.py, you can change metas.pymodules in config.yml to import those files. Note, you have to write the dependencies in reverse order. That is, if __init__.py depends on A.py, which again depends on B.py, then you need to write:

!MyAwesomeExecutor
with:
  ...
metas:
  py_modules:
    - B.py
    - A.py
    - __init__.py

Legacy Hub Pod structure

This is also a valid structure, it works but not recommended:

- MyAwesomeExecutor/
    |
    |- Dockerfile
    |- manifest.yml
    |- README.md
    |- requirements.txt
    |- MyAwesomeExecutor.py
    |- helper.py
    |- config.yml
        |- metas.py_modules
            |- helper.py
            |- MyAwesomeExecutor.py

Please note that:

  • Here MyAwesomeExecutor directory is not a python module, as it lacks __init__.py under the root;
  • to import foo.py, you must to use from jinahub.foo import bar, where jinahub is the common namespace for all external modules;
  • in config.yml:metas.py_modules, helper.py needs to be put before MyAwesomeExecutor.py.

Test a Pod/App locally

jina hub build /MyAwesomeExecutor/

More Hub CLI usage can be found via jina hub build --help

Work with your own repository

  1. Create a new repository
  2. pip install "jina[hub]" && jina hub new --type pod
git checkout -b feat-new-executor
git add .
git commit -m "feat: add new executor"
git push
  1. Add the Hub Updater and Hub Builder Github Actions to the Github workflow of your hub-type repo.
  2. Make a Pull Request on feat-new-executor -> master

Reference

manifest.yml Schema

manifest.yml must exist if you want to publish your Pod image to Jina Hub.

manifest.yml annotates your image so that it can be managed by Jina Hub. To get better appealing on Jina Hub, you should carefully set manifest.yml to the correct values.

Key Description Default
manifest_version The version of the manifest protocol 1
type The type of the image Required
kind The kind of the executor Required
name Human-readable title of the image (must match with ^[a-zA-Z_$][a-zA-Z_\s\-$0-9]{3,30}$) Required
description Human-readable description of the software packaged in the image Required
author Contact details of the people or organization responsible for the image (string) Jina AI Dev-Team ([email protected])
url URL to find more information on the image (string) https://jina.ai
documentation URL to get documentation on the image (string) https://docs.jina.ai
version Version of the image, it should be Semantic versioning-compatible 0.0.0
vendor The name of the distributing entity, organization or individual (string) Jina AI Limited
license License under which contained software is distributed, it should be in this list apache-2.0
avatar A picture that personalizes and distinguishes your image None
platform A list of CPU architectures that your image built on, each item should be in this list [linux/amd64]
keywords A list of strings help user to filter and locate your package None

Naming conventions

All apps and executors should follow the naming convention:

jinahub/type.kind.jina_image_name:image_version-jina_version

For example:

jinahub/pod.encoder.transformertfencoder:0.0.16-0.9.33
Text Meaning
jinahub/ Push to jinahub Docker repo
app Type
encoder Kind
transformertfencoder Pod name
0.0.16 Pod version
0.9.33 Jina version

From Jina 0.4.10 onwards, Jina Hub is referred as a Git Submodule in jina-ai/jina.

Contributing

We welcome all kinds of contributions from the open-source community, individuals and partners. Without your active involvement, Jina won't be successful.

Please first read the contributing guidelines before the submission.

Contributors ✨

All Contributors

Community

  • Code of conduct - play nicely with the Jina community
  • Slack workspace - join #general on our Slack to meet the team and ask questions
  • YouTube channel - subscribe to the latest video tutorials, release demos, webinars and presentations.
  • LinkedIn - get to know Jina AI as a company and find job opportunities
  • Twitter Follow - follow and interact with us using hashtag #JinaSearch
  • Company - know more about our company and how we are fully committed to open-source.

Open Governance

As part of our open governance model, we host Jina's Engineering All Hands in public. This Zoom meeting recurs monthly on the second Tuesday of each month, at 14:00-15:30 (CET). Everyone can join in via the following calendar invite.

The meeting will also be live-streamed and later published to our YouTube channel.

Join us

Jina is an open-source project. We are hiring full-stack developers, evangelists, and PMs to build the next neural search ecosystem in open source.

License

Copyright (c) 2020 Jina AI Limited. All rights reserved.

Jina is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].