@workm8/backstage-docker-tags v1.1.0-alpha
Workm8 Docker plugin
Installation
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-tagsSet the proxy
In 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: trueUsage
Update your EntityPage
In 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>
);Annotate your components
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'Configuration
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
Private repositories
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}Issues
If you come across any issues, please don't hesitate to open a GitHub issue.