# Custom Runtimes -------------------------------------------------------------------------------- title: "Container Registry Services" description: "Catalyst AppSail is a fully-managed platform of Catalyst Serverless that enables you to develop and deploy web services in managed runtimes of Java, Node.js, and Python, or of custom runtimes as OCI images to the cloud with ease." last_updated: "2026-03-18T07:41:08.634Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/custom-runtimes/container-registry-services/" service: "Serverless" -------------------------------------------------------------------------------- # Container Registry Services ### Docker Hub Catalyst facilitates an easy integration with {{%link href="https://hub.docker.com/" %}}Docker Hub{{%/link%}}, one of the leading container registry services. After you configure the integration, you can easily deploy images from your Docker Hub account to AppSail from the console. You can also manage your Docker Hub connection from the console. #### Integrate Docker Hub with Catalyst Perform a one-time configuration to integrate your Docker Hub account with Catalyst in the following way: 1. Navigate to **Settings** in the console, then select **Integrations** under *General Settings*. Click **Docker Hub** from the list. <br /> 2. Click **Add Docker Account** to add a new connection. <br /> 3. Provide a name for the connection. Then, add your Docker Hub account's username ({{%link href="https://docs.docker.com/accounts/general-faqs/" %}}Docker ID{{%/link%}}) and the Personal Access Token. You can create and fetch access tokens from Docker Home as explained in {{%link href="https://docs.docker.com/security/access-tokens/" %}}this help page{{%/link%}}. <br /> 4. Click **Add**. Your connection will be created and listed on the *Docker Hub Integrations* page. You can now use this connection to {{%link href="/en/serverless/help/appsail/custom-runtimes/deploy-from-console/" %}}deploy a Docker image{{%/link%}} from Docker Hub on AppSail. <br /> <br> #### Edit Docker Hub Connection You can edit an individual Docker Hub connection as described below. 1. Click the ellipsis icon of the connection that you wish to edit, then click **Edit**. <br /> 2. Edit the required information. You can update the connection name, your account's username, or the personal access token. Click **Save**. <br /> <br> #### Delete Docker Hub Connection You can delete an individual Docker Hub connection as described below. 1. Click the ellipsis icon of the connection that you wish to delete, then click **Delete**. <br /> 2. Click **Delete** from the confirmation pop-up. <br /> <br> ### Amazon Elastic Container Registry Catalyst facilitates an easy integration with AWS that enables you to access the {{%link href="https://aws.amazon.com/ecr/" %}}Amazon Elastic Container Registry{{%/link%}}. After you configure the integration, you can easily deploy images from your Amazon ECR to AppSail from the console. You can also manage your AWS connection from the console. #### Integrate AWS with Catalyst Perform a one-time configuration to integrate your AWS account with Catalyst in the following way: 1. Navigate to **Settings** in the console, then select **Integrations** under *General Settings*. Click **AWS** from the list. <br /> 2. Click **Add AWS** to add a new connection. <br /> 3. Provide a name for the connection. Then, add your AWS account's Access Key ID and Access Key Secret. You can create and manage access key credentials in AWS as explained in {{%link href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html" %}}this help page{{%/link%}}. <br /> 4. Click **Add**. Your connection will be created and listed on the *AWS Integrations* page. You can now use this connection to {{%link href="/en/serverless/help/appsail/custom-runtimes/deploy-from-console/" %}}deploy an OCI Image{{%/link%}} from AWS ECR on AppSail. <br /> <br> #### Edit AWS Connection You can edit an individual AWS connection as described below. 1. Click the ellipsis icon of the connection that you wish to edit, then click **Edit**. <br /> 2. Edit the required information. You can update the connection name, your Access Key ID and Access Key Secret. Click **Save**. <br /> <br> #### Delete AWS Connection You can delete an individual AWS connection as described below. 1. Click the ellipsis icon of the connection that you wish to delete, then click **Delete**. <br /> 2. Click **Delete** from the confirmation pop-up. <br /> <br> ### Google Artifact Registry Catalyst facilitates an easy integration with {{%link href="https://cloud.google.com/artifact-registry/docs/overview" %}}Google Artifact Registry{{%/link%}}. After you configure the integration, you can easily deploy images from your GCP account to AppSail from the console. You can also manage your GCP connection from the console. #### Integrate Google Cloud Platform with Catalyst Perform a one-time configuration to integrate your GCP account with Catalyst in the following way: 1. Navigate to **Settings** in the console, then select **Integrations** under *General Settings*. Click **Google Cloud Platform** from the list. <br /> 2. Click **Add GCP Account** to add a new connection. <br /> 3. Provide a name for the connection. Then, upload your GCP account's {{%link href="https://cloud.google.com/iam/docs/service-account-creds" %}}Service Account Credentials JSON{{%/link%}} file which will contain your credentials information. You can get a service account key and download it as a JSON file from the Google Cloud console as explained in {{%link href="https://cloud.google.com/iam/docs/keys-list-get" %}}this help page{{%/link%}}. <br /> 4. Click **Add**. Your connection will be created and listed on the *GCP Integrations* page. You can now use this connection to {{%link href="/en/serverless/help/appsail/custom-runtimes/deploy-from-console/" %}}deploy an OCI Image from GCP Artifact Registry{{%/link%}} on AppSail. <br /> <br> #### Edit GCP Connection You can edit an individual GCP connection as described below. 1. Click the ellipsis icon of the connection that you wish to edit, then click **Edit**. <br /> 2. Edit the required information. You can update the connection name or upload a new Service Account Credentials JSON file. Click **Save**. <br /> <br> #### Delete GCP Connection You can delete an individual GCP connection as described below. 1. Click the ellipsis icon of the connection that you wish to delete, then click **Delete**. <br /> 2. Click **Delete** from the confirmation pop-up. <br /> <br> -------------------------------------------------------------------------------- title: "Deploy from CLI" description: "Catalyst AppSail is a fully-managed platform of Catalyst Serverless that enables you to develop and deploy web services in managed runtimes of Java, Node.js, and Python, or of custom runtimes as OCI images to the cloud with ease." last_updated: "2026-03-18T07:41:08.638Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/custom-runtimes/deploy-from-cli/" service: "Serverless" -------------------------------------------------------------------------------- # Deploy AppSail as a Custom Runtime from the CLI ### Initialize or Add an AppSail Service You can {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}initialize an AppSail service{{%/link%}} for a custom runtime app directly in your app's directory, or from a new directory using the {{%link href="/en/cli/v1/cli-command-reference/" %}}Catalyst CLI{{%/link%}}. You can also {{%link href="/en/cli/v1/add-appsail/" %}}add an AppSail service{{%/link%}} to an existing Catalyst project directory, where other resources have been initialized. You can [deploy the AppSail service](#deploy-an-appsail-service) after you initialize or add it. To initialize an AppSail service in a new directory, create a folder for your project in your local machine and navigate to it from your terminal. Initialize a project by executing the following command from that directory: {{%cli%}}catalyst init{{%/cli%}} You can add an AppSail service in an existing Catalyst project directory by executing this CLI command: {{%cli%}}catalyst appsail:add{{%/cli%}} <br> Catalyst supports two protocols for custom runtime apps that you can use to associate your app's image with AppSail. Each protocol has a distinct schema for identification and functioning. * {{%bold%}}Docker Image Protocol:{{%/bold%}} Use this to associate a pre-built image of your app present in the local docker registry. The image must be built and {{%link href="https://docs.docker.com/reference/cli/docker/image/tag/" %}}tagged{{%/link%}} to point to the local registry. Example: *docker://localhost/expres-hw:latest* * {{%bold%}}Docker Archive Protocol:{{%/bold%}} Use this to point to an archive file (.tar or .tar.gz) of a pre-built image of your app in your system's directory. Example: *docker-archive://test.tar* {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}.tar{{%/badge%}} file can be typically generated with the {{%link href="https://docs.docker.com/reference/cli/docker/image/save/" %}}{{%badge%}}docker save{{%/badge%}} command{{%/link%}}.{{%/note%}} You need not provide any other details except the name for the AppSail for container images. The source or build path of the app, stack, and startup command are not required to be configured for OCI images, as they are already defined in the images. The steps to initialize or add the AppSail service will be the same as described below: 1. The CLI will prompt you to select the runtime type as Catalyst-Managed Runtime or **Docker Image** when AppSail is initialized. Select the second option. 2. Select the protocol as **Docker Image** or **Docker Archive**. 3. {{%bold%}}Docker Image Protocol:{{%/bold%}} If you select **Docker Image**, the CLI will list all the available images with tags in the local docker registry. Select the image you need. {{%bold%}}Docker Archive Protocol:{{%/bold%}} If you select **Docker Archive**, the CLI will prompt you to enter the absolute path to the TAR file image of your app in your local system. {{%note%}}{{%bold%}}Note:{{%/bold%}} When the AppSail configuration is stored in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file, the path will be stored relative to that file's location.{{%/note%}} 4. Provide a name for the AppSail service. You can name it anything you prefer. AppSail is now initialized in your local directory, and the app's image is now associated with the AppSail service. The configurations will be updated in {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}{{%badge%}}catalyst.json{{%/badge%}}{{%/link%}} file accordingly. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}{{%badge%}}app-config.json{{%/link%}}{{%/badge%}} file will not be created when you initialize AppSail with a container image. All the app specifications will be stored in the {{%badge%}}catalyst.json{{%/badge%}} file. You can add certain custom configurations of your app in this file. Refer {{%link href="/en/serverless/help/appsail/appsail-configurations/" %}}here{{%/link%}} for details.{{%/note%}} You can now code your business logic in your app, then {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}serve the AppSail service{{%/link%}} through a localhost to {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}debug{{%/link%}} and test it, or {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/#the-app-configjson-file" %}}deploy it{{%/link%}} to the remote console directly. ### Deploy an AppSail Service Catalyst enables you to deploy {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail services{{%/link%}} in two different ways: * {{%bold%}}Regular Deploy:{{%/bold%}} The regular deploy execution applies when you have already initialized an AppSail resource either during the {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/" %}}project initialization{{%/link%}} or by {{%link href="/en/cli/v1/add-appsail/" %}}adding it in an existing project directory{{%/link%}}. * {{%bold%}}Standalone Deploy:{{%/bold%}} You can do a standalone deploy of an app directly without initializing it as an AppSail service in prior. The OCI image of your app that is associated with Appsail is deployed, along with the configuration file of your project. {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst only supports the deployment of {{%link href="https://github.com/opencontainers/image-spec" %}}OCI-compliant images{{%/link%}} built for the Linux AMD64 (x86-64) platform.{{%/note%}} <br> ### Regular Deploy If the AppSail app is already initialized in the project directory, the CLI will automatically deploy the app with the rest of the project resources when you execute the {{%badge%}}catalyst deploy{{%/badge%}} command. The CLI will display the endpoint URL of the app after it is deployed, that you can open it with. <br> If you have multiple AppSail apps in your project directory, you can access all of their URL endpoints from the CLI. You can also execute the following command to deploy the AppSail service alone from your app's source directory. {{%cli%}}catalyst deploy appsail{{%/cli%}} The deployment process is the same. <br> <br> ### Standalone Deploy You must execute the standalone deploy command from a Catalyst project directory's root. That is, {{%badge%}}catalyst.json{{%/badge%}} and other {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}project dependency files{{%/link%}} must be present in the directory. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you execute the standalone deploy command without any of the [options specific to deploying container images](#standalone-deploy-appsail-options), the CLI will prompt you for inputs related to Catalyst-managed runtime apps only by default. {{%/note%}} You can use the standalone deploy command with these options to deploy apps as container images: {{%badge%}}--name &lt;name&gt;{{%/badge%}}, {{%badge%}}--source &lt;image&gt;{{%/badge%}}, {{%badge%}}--command &lt;command&gt;{{%/badge%}}, {{%badge%}}--port &lt;port&gt;{{%/badge%}}. The first two are mandatory, while the last two are optional and can be used to override any startup commands or ports already configured in the container image definition. The options are explained in detail below. <br> You can do the standalone deploy of an AppSail app in the following way: 1. Navigate to the directory the app's deployable files are present in, and executing the following command: {{%cli%}}catalyst deploy appsail{{%/cli%}} 2. Enter a name for your app. You can name the main file of your app’s build anything you prefer. <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} However, when you build your app as a Java WAR file, you will need to name the main file root.war or add specific controllers according to your code.{{%/note%}} 3. Select the build path for your app from the list and press **Enter**. <br> 4. Select a stack for your app and press **Enter**. <br> If you select Java, the CLI will further prompt you to pick either {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/"%}}Java SE or the Java WAR{{%/link%}} as your app's deployable format. <br> If you select any other stack, this will be skipped. 5. You must additionally specify the startup command for your app based on the stack, framework, and web server used. This information will be directly deployed and will be available in the Configurations section of your console after the app deployment. <br> Your app is now directly deployed to the associated remote project without requiring you to initialize it as an AppSail resource. You can now access it with its endpoint URL displayed in the CLI. <br> <br> ### Standalone Deploy AppSail Options The catalyst deploy appsail standalone command supports the following options. Some of these are applicable to both Catalyst-managed runtime and container images apps, while some are specific to only one of them. {{%bold%}}--name &lt;name&gt;{{%/bold%}} Use this to specify the name of your app. This is applicable to both Catalyst-managed runtime and container image apps. Example: {{%cli%}}--name DemoApp{{%/cli%}} {{%bold%}}--command &lt;command&gt;{{%/bold%}} Use this to specify the {{%link href="/en/serverless/help/appsail/appsail-configurations/#startup-commands" %}}startup command{{%/link%}} for your app. This is applicable to both Catalyst-managed runtime and container image apps. This will override any values already configured in the container image definition. Example: {{%cli%}}--command npm start{{%/cli%}} {{%bold%}}--source &lt;image&gt;{{%/bold%}} Use this to specify the source of the docker image to be deployed. This is applicable only to container image apps. You must start with '*docker://*' for Docker image protocol and '*docker-archive://*' for Docker archive protocol. {{%link href="/en/cli/v1/initialize-resources/initialize-appsail/#initialize-appsail-as-a-custom-runtime" %}}Refer here for details{{%/link%}}. Example: {{%cli%}}--source docker://example-voting-app-worker:latest{{%/cli%}} {{%bold%}}--port &lt;port&gt;{{%/bold%}} Use this to specify the port for the AppSail. This is applicable only to container image apps. This will override any values already configured in the container image definition. Example: {{%cli%}}--port 8000{{%/cli%}} -------------------------------------------------------------------------------- title: "Deploy from the Console" description: "Catalyst AppSail is a fully-managed platform of Catalyst Serverless that enables you to develop and deploy web services in managed runtimes of Java, Node.js, and Python, or of custom runtimes as OCI images to the cloud with ease." last_updated: "2026-03-18T07:41:08.651Z" source: "https://docs.catalyst.zoho.com/en/serverless/help/appsail/custom-runtimes/deploy-from-console/" service: "Serverless" -------------------------------------------------------------------------------- # Deploy AppSail as a Custom Runtime from the Console AppSail enables you to deploy an app as a container image from the Catalyst console directly. The steps given here are common for all the Container Registry services. 1. Navigate to the **Serverless** service in your Catalyst project that you wish to deploy your app in, then click **AppSail** under *Compute*. <br /> Upon clicking **Deploy from CLI**, a pop-up will show you the instructions to deploy an AppSail service from the CLI. Refer the {{%link href="/en/serverless/help/appsail/custom-runtimes/deploy-from-cli/" %}}CLI help section{{%/link%}} for detailed steps. 2. Click **Deploy from Console** to directly deploy your app here. 3. Select the deployment type as **Docker Image**, and provide a name for your AppSail service. Select the deployment type as Docker Image, and select the Container Registry Service from the list: {{%link href="https://hub.docker.com/" %}}Docker Hub{{%/link%}}, {{%link href="https://aws.amazon.com/ecr/" %}}AWS ECR{{%/link%}}, or {{%link href="https://cloud.google.com/artifact-registry/docs/overview" %}}Google Artifact Registry{{%/link%}}. Enter the following according to the service you choose- * Docker Hub- {{%link href="https://docs.docker.com/get-started/docker-concepts/building-images/build-tag-and-publish-an-image/" %}}Image URL{{%/link%}} * Amazon ECR- {{%link href="https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-info.html" %}}Image URI{{%/link%}} * GCP Artifact Registry- {{%link href="https://cloud.google.com/artifact-registry/docs/container-concepts" %}}Image Path{{%/link%}} Refer to the help links on details to fetch them. <br /> 4. You must select the credentials of the Container Registry Service that you will use for your OCI image deployment. The drop-down will list all the credentials that you have configured with the container service. You can select an existing credential or click the **Create Integration** button below to add a new credential. This will redirect you to {{%link href="/en/getting-started/set-up-a-catalyst-project/integrations-settings/" %}}Integration Settings{{%/link%}} . <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} The steps to add and manage Catalyst integrations for {{%link href="/en/serverless/help/appsail/custom-runtimes/container-registry-services/#docker-hub" %}}Docker Hub{{%/link%}}, {{%link href="/en/serverless/help/appsail/custom-runtimes/container-registry-services/#amazon-elastic-container-registry" %}}AWS{{%/link%}}, or {{%link href="/en/serverless/help/appsail/custom-runtimes/container-registry-services/#google-artifact-registry" %}}Google Cloud Platform{{%/link%}} are covered in their respective help sections. {{%/note%}} <br /> 5. You can configure advanced settings for your app. i. Provide a {{%link href="/en/serverless/help/appsail/appsail-configurations/#startup-commands" %}}startup command{{%/link%}} for your app based on your app's runtime. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you have already d the startup command in your container image, the command you provide in Catalyst will take priority.{{%/note%}} ii. Configure a {{%link href="/en/serverless/help/appsail/appsail-configurations/#ports-for-app-executions" %}}custom port{{%/link%}} for your app's execution, if needed. Ports within the range of 0 to 1024 are reserved, with the exception of ports 80 and 443. You can use any other ports outside this range. Port 9000 will be used by default. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you have not configured the port in your code, ensure that you configure the same port to listen to while starting the server in the startup command of your app.{{%/note%}} iii. Configure the required {{%link href="/en/serverless/help/appsail/appsail-configurations/#memory-and-disk-allocation" %}}memory{{%/link%}} for your app's execution, based on your requirements. You can select 128, 256, 512, 1024, or 2048 MB. {{%info%}}{{%bold%}}Info:{{%/bold%}} You can also configure the disk size for your app's execution after you deploy the app from the {{%link href="/en/serverless/help/appsail/console/overview/" %}}Configuration section{{%/link%}}.{{%/info%}} iv. Configure {{%link href="/en/serverless/help/appsail/appsail-configurations/#environment-variables" %}}environment variables{{%/link%}} for your AppSail service as needed. <br /> You can add multiple environment variables by clicking the **+** icon, and remove them by clicking the **—** icon. {{%info%}}{{%bold%}}Info:{{%/bold%}} The environment variable will be added to the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}Catalyst environment{{%/link%}} (development or production) that you're currently working in. You can change the environment from the drop-down at the top of the console, and add variables as required.{{%/info%}} 6. After you configure the details, click **Deploy**. Your app will be deployed to the console. You will now be able to view and manage your app from the console. <br /> {{%link href="/en/serverless/help/appsail/console/manage-appsail/" %}}Refer here for help on managing your AppSail service{{%/link%}}.