Skip to Content
CLIDocker

Docker

An official Docker image is available for CI/CD pipelines. It ships Node, the Salesforce CLI, git, bash, and jq — everything sfdt’s shell scripts need.

Pull the official image

The published multi-arch image (linux/amd64 + linux/arm64) lives on GitHub Container Registry. Pull it directly — no build step needed:

docker pull ghcr.io/scoobydrew83/sfdt:latest # or pin a version: docker pull ghcr.io/scoobydrew83/sfdt:0.22.1
# smoke test docker run --rm ghcr.io/scoobydrew83/sfdt:latest --help

A new image is published for every CLI release (tagged with the version, plus :latest). The image ships Node 22.

Use as a CI job image

The image is a first-class CI job image: sfdt ci init --provider gitlab|bitbucket --runner docker generates pipelines whose jobs run directly on ghcr.io/scoobydrew83/sfdt:latest — no per-run npm installs. See CI/CD Integration. (On GitHub, use the GitHub Action instead.)

Build from source

If you’d rather build locally instead of pulling:

docker build -t sfdt .

Run against a mounted project

Mount your Salesforce project at /project and pass auth via environment:

docker run --rm \ -v "$(pwd):/project" \ -e SFDX_AUTH_URL="$SFDX_AUTH_URL" \ sfdt deploy
docker run --rm -v "$(pwd):/project" \ sfdt explain --latest

GitHub Actions

- name: Deploy run: | docker run --rm \ -v "${{ github.workspace }}:/project" \ -e SF_ORG_INSTANCE_URL="${{ secrets.SF_ORG_INSTANCE_URL }}" \ sfdt deploy --skip-preflight

AI in the container

Install the selected AI provider CLI in the container when using AI features. Use Gemini or OpenAI in CI — Claude’s interactive mode isn’t CI-friendly. See AI Providers.

docker run --rm -v "$(pwd):/project" \ sfdt explain --latest
Last updated on