---
title: "Deploy from a Container Registry | Hostman Docs"
description: "Deploy an app on Hostman App Platform from a Docker image in GitHub Container Registry, GitLab Container Registry, or any other public or private registry."
---

> For the complete documentation index for AI agents, see [llms.txt](https://hostman.com/llms.txt).

App Platform lets you deploy an app from a prebuilt Docker image stored in a public or private GitHub Container Registry, GitLab Container Registry, or any other registry that you can connect by its URL.

For private images, you need a username and password or an access token, depending on your provider's requirements.

This method works well if you build images yourself or use prebuilt images from container registries.

## Requirements and Limitations

-   **Platform**: Build your image for `linux/amd64`. If the image is built for a different platform, the deployment fails with a manifest error.
    
-   **Port**: App Platform detects the app port from the image metadata (for example, the `EXPOSE` instruction) or from environment variables, if they explicitly set a port. If no port is specified, the default port is used.
    
-   **Proxying**: App Platform automatically configures access to your app through a reverse proxy and routes traffic from external ports `80` and `443` to the container port. You don't need to configure proxying manually.
    
-   **Direct port access**: In addition to HTTPS access via a domain, you may be able to connect directly to service ports at `domain:port`. This is useful for services that don't use HTTP.
    
-   **Data persistence**: Data inside the container is not preserved between deployments. Use external storage for files and databases. For details, see [How App Platform Works](https://hostman.com/docs/app-platform/how-it-works/).
    
-   **Downtime**: Your app may be temporarily unavailable during redeployment.
    

## Step 1. Select a Registry and Image

1.  Go to **App Platform** and click **Create app**.
2.  Open the **Container image** tab.
3.  Select the image source: **GitHub Container Registry**, **GitLab Container Registry**, or **Other registry**.
4.  Click **Add registry** and follow the instructions for your registry:

### GitHub Container Registry

1.  Enter the user or organization (namespace).
2.  Enter a token with the `read:packages` scope. App Platform uses the token to find images and tags in the selected namespace and to pull the image during deployment.
3.  Click **Connect**.
4.  Select the connected user, organization, or registry from the list. 
5.  Select the image and enter a tag or digest. You don't need to enter your credentials again.

> [!NOTE]
> App Platform searches for the tag only among the 500 most recent versions in GitHub Container Registry. If the tag belongs to an older version, you'll get an "image not found" error.

### GitLab Container Registry

1.  Enter the user or organization (namespace).
2.  Enter a token with the `read_api` and `read_registry` scopes. Alternatively, you can grant the `api` scope instead.
3.  Click **Connect**.
4.  Select the connected user, organization, or registry from the list. 
5.  Select the image and enter a tag or digest. You don't need to enter your credentials again.

App Platform uses the token to find images and tags in the selected namespace and to pull the image during deployment. To access private groups and projects, issue the token from an account that has access to them.

> [!NOTE]
> App Platform searches for the tag only among the 500 most recent versions in GitLab Container Registry. If the tag belongs to an older version, you'll get an "image not found" error.

### Other Registry

1.  Enter the registry address, for example `registry.example.com` or `registry.example.com:5000`.
2.  If the registry is private, enter a username and password or a token with permission to pull images.
3.  Click **Connect**.
4.  Enter the image path and tag manually. Searching for images and tags is not available for registries connected through **Other registry**. App Platform checks that the image exists when you create the app.

After you connect a registry, you can select it from the list next time. You don't need to enter the address or credentials again.

## Step 2. Choose Region and Server Configuration

Applications run on dedicated cloud servers. Select a deployment region and an appropriate server configuration. You can choose from predefined plans or define a custom configuration under the **Custom** tab.

You can upgrade to a more powerful plan later if needed.

## Step 3. Configure Environment Variables

Use variables to store and pass configuration values such as passwords, file paths, and tokens. 

See more [here](https://hostman.com/docs/app-platform/variables/).

## Step 4. Configure a Private Network

Click **Show advanced settings** to configure a private network. 

Create or select a private network for the application and assign the IP address it will use.

Note that the private network cannot be changed after deployment.

Apps with a private IP address may experience a short downtime during redeployment, as existing ports need to be freed up before the new version starts.

## Step 5. Enter Application Details

Optionally, specify an application name and add a description. This information will be displayed in the dashboard.

You can also select the project the application should belong to.

These settings can be updated at any time.

## Step 6. Deploy

Click **Create**. Once the process begins, you can monitor progress in the **Deploy** tab.

Deployment logs typically include all the information you need to troubleshoot issues. If something goes wrong—such as errors in your code—the logs will provide detailed messages explaining the cause.

During the initial deployment, server provisioning may take some time. Once the process is complete, the application status will update, and a confirmation message will appear in the logs.

You can find the application’s IP address and its default technical domain on the **Dashboard** tab. You can also [configure a custom domain](https://hostman.com/docs/app-platform/domains/#add-a-custom-domain).
