Install the @workm8/backstage-docker-tags package in your frontend app package:
# From your Backstage root directory
yarn add --cwd packages/app @workm8/backstage-docker-tagsIn your app-config.yaml located in the root directory we'll need to add a proxy to hub.docker.com.
Under proxy, add the following:
proxy:
endpoints:
'/docker':
target: 'https://hub.docker.com'
changeOrigin: trueIn your EntityPage.tsx file located in packages\app\src\components\catalog we'll need to make a few changes to get the Docker
First we need to add the following imports:
import { DockerTagsTableWidget } from '@workm8/backstage-docker-tags';You can display the Widget by adding the following code (for example, the overviewContent):
+ const dockerTagsContent = (
+ <DockerTagsTableWidget
+ heading="Docker"
+ columns={['name', 'username', 'status']} />
+ );
const overviewContent = (
<Grid container spacing={3} alignItems="stretch">
{entityWarningContent}
<Grid item md={4}>
<EntityAboutCard variant="gridItem" />
</Grid>
<Grid item md={4} xs={12}>
<EntityCatalogGraphCard variant="gridItem" height={400} />
</Grid>
+ <Grid item md={4} xs={12}>
+ {dockerTagsContent}
+ </Grid>
<Grid item md={4} xs={12}>
<EntityLinksCard />
</Grid>
<Grid item md={8} xs={12}>
<EntityHasSubcomponentsCard variant="gridItem" />
</Grid>
</Grid>
);By adding the docker.com/repository annotation to your component, the DockerRepositoriesWidget will fetch all the versions from hub.docker.com.
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: Grafana
annotations:
+ docker.com/repository: 'grafana/grafana'You can override the default header, columns and pagination.
| Attribute | Type | Default | Description |
|---|---|---|---|
| heading | String | Docker |
The table Header |
| columns | array | ['name', 'username', 'status', 'architecture'] |
The columns that are shown. Possible values: name, username, status, architecture |
| initialPage | number | 0 | The first page that is shown |
| pageSize | number | 5 | The default page size |
| pageSizeOptions | array | [5, 10, 25] |
Possible page sizes. Must include pageSize |
| showCountInHeading | boolean | true | If true, it shows the count of the total amount of Docker images in the heading. |
By default, the table looks like this.

By disabling some columns, you can make it fit in smaller areas

For private repositories, you need to create a Personal Access Token on Docker Hub. This Personal Access Token needs to be added in the proxy.
endpoints:
'/docker':
target: 'https://hub.docker.com'
changeOrigin: true
+ headers:
+ Authorization: {PERSONAL_ACCESS_TOKEN}If you come across any issues, please don't hesitate to open a GitHub issue.