Connecting a repository to a package

You can connect a repository to a container image on GitHub.

GitHub Packages is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server, and GitHub AE.


GitHub Packages is not available for private repositories owned by accounts using legacy per-repository plans. Also, accounts using legacy per-repository plans cannot access the Container registry since these accounts are billed by repository. For more information, see "GitHub's products."

By connecting a repository to a package, the package landing page will show information and links from the repository, such as the README.

Connecting a repository to a user-owned package on GitHub

  1. On GitHub, navigate to the main page of your user account.

  2. In the top right corner of GitHub.com, click your profile photo, then click Your profile. Profile photo

  3. On your profile page, in the top right, click Packages. Packages option on profile page

  4. Under your package versions, click Connect repository. Connect a repository button on packages landing page

  5. Select a repository, then click Connect repository. Connect a repository button in repository selection pop-up window

Connecting a repository to an organization-owned package on GitHub

  1. On GitHub, navigate to the main page of your organization.

  2. Under your organization name, click Packages.

    Packages tab on org landing page

  1. Under your package versions, click Connect repository. Connect a repository button on packages landing page

  2. Select a repository, then click Connect repository. Connect a repository button in repository selection pop-up window

Connecting a repository to a container image using the command line

  1. In your Dockerfile, add this line, replacing OWNER and REPO with your details:

    LABEL org.opencontainers.image.source=https://github.com/OWNER/REPO

    For example, if you're the user monalisa and own my-repo, you would add this line to your Dockerfile:

    LABEL org.opencontainers.image.source=https://github.com/monalisa/my-repo

    For more information, see "LABEL" in the official Docker documentation and "Pre-defined Annotation Keys" in the opencontainers/image-spec repository.

  2. Build your container image. This example builds an image from the Dockerfile in the current directory and assigns the image name hello_docker.

    $ docker build -t hello_docker .
  3. Optionally, review details for the Docker image you want to tag.

    $ docker images
    > REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
    > ghcr.io/my-org/hello_docker         latest              38f737a91f39        47 hours ago        91.7MB
    > ghcr.io/my-username/hello_docker    latest              38f737a91f39        47 hours ago        91.7MB
    > hello-world                                           latest              fce289e99eb9        16 months ago       1.84kB
  4. Tag your Docker image with your desired image name and hosting destination.

    $ docker tag IMAGE_NAME ghcr.io/OWNER/NEW_IMAGE_NAME:TAG

    For example:

    $ docker tag 38f737a91f39 ghcr.io/monalisa/hello_docker:latest
  5. If you haven't already, authenticate to the Container registry. For more information, see "Authenticating to the Container registry."

    $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
    > Login Succeeded
  6. Push your container image to the Container registry.

    $ docker push ghcr.io/OWNER/IMAGE-NAME:TAG

    For example:

    $ docker push ghcr.io/monalisa/hello_docker:latest

Did this doc help you?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Or, learn how to contribute.