Skip to content

Docker (sdkr)

The sdkr subcommand group wraps Docker operations for building, scanning, tagging, and pushing container images to multiple registries.

Synopsis

smurf sdkr <command> [flags] [args]

Commands

Command Description
build Build a Docker image
scan Scan an image for security vulnerabilities
tag Tag a local image
remove Remove a local image
push Push to a registry (see subcommands)
push aws Push to AWS ECR
push az Push to Azure ACR
push gcp Push to Google Container Registry / Artifact Registry
push hub Push to Docker Hub
provision-acr Build and push to Azure ACR
provision-ecr Build and push to AWS ECR
provision-gcp Build and push to GCP GCR / Artifact Registry
provision-hub Build and push to Docker Hub
provision-ghcr Build and push to GitHub Container Registry
init Generate Docker-focused smurf.yaml

Each provision-* command builds then pushes (it does not scan). When run on a TTY it prompts Proceed with push? [y/N] before pushing; pass --yes to skip the prompt, for example in CI.

build

Build a Docker image from a Dockerfile.

smurf sdkr build [IMAGE[:TAG]]

Flags:

Flag Description
--context Build context directory
-f, --file Path to Dockerfile, relative to the context directory
--no-cache Disable build cache
--target Multi-stage build target
--platform Target platform (e.g. linux/amd64)
--build-arg Build-time variables (KEY=VALUE)
--buildkit Enable BuildKit for advanced Dockerfile features
--timeout Build timeout in seconds (default 1500)

Examples:

smurf sdkr build my-app:v1.1.9
smurf sdkr build --dockerfile=./docker/Dockerfile --no-cache my-app:latest
smurf sdkr build   # reads imageName from smurf.yaml

scan

Analyze a Docker image for known vulnerabilities before deployment.

smurf sdkr scan <IMAGE>
smurf sdkr scan my-app:v1.1.9

tag

Tag a local Docker image.

smurf sdkr tag <SOURCE> <TARGET>

remove

Delete a local Docker image.

smurf sdkr remove <IMAGE>

push

Push images to cloud registries. Each registry has its own subcommand:

smurf sdkr push aws <ECR_URL>
smurf sdkr push az <ACR_URL>
smurf sdkr push gcp <GCR_URL>
smurf sdkr push hub <IMAGE>

Provision commands

Provision commands combine build with push in a single step (no scan step). Each one prompts Proceed with push? [y/N] before pushing when run on a TTY; pass --yes to skip the prompt.

provision-ecr

smurf sdkr provision-ecr [ACCOUNT.dkr.ecr.REGION.amazonaws.com/REPO:TAG]

Requires AWS credentials via environment variables or smurf.yaml.

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=us-east-1

smurf sdkr provision-ecr 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:v1.1.9

provision-acr

smurf sdkr provision-acr [REGISTRY.azurecr.io/REPO:TAG]

Requires Azure credentials (AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID) or config fields.

provision-gcp

smurf sdkr provision-gcp [gcr.io/PROJECT/REPO:TAG]

Supports gcr.io/ and *-docker.pkg.dev/ registries.

provision-hub

Build and push to Docker Hub.

smurf sdkr provision-hub myorg/my-app:v1.1.9

provision-ghcr

Build and push to GitHub Container Registry.

smurf sdkr provision-ghcr ghcr.io/myorg/my-app:v1.1.9

Supported registries

Registry Push command Provision command
AWS ECR push aws provision-ecr
Azure ACR push az provision-acr
Google GCR / Artifact Registry push gcp provision-gcp
Docker Hub push hub provision-hub
GitHub Container Registry provision-ghcr

Using smurf.yaml

Generate a Docker config:

smurf sdkr init
sdkr:
  imageName: "my-application"
  targetImageTag: "v1.1.9"

Then run provision without arguments:

smurf sdkr provision-ecr

GitHub Actions example

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - name: Setup Smurf
        uses: clouddrove/[email protected]
        with:
          version: v1.1.9

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1

      - name: Build and push to ECR
        run: smurf sdkr provision-ecr

See Configuration for the full smurf.yaml reference.