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 --helpA 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 deploydocker run --rm -v "$(pwd):/project" \
sfdt explain --latestGitHub Actions
- name: Deploy
run: |
docker run --rm \
-v "${{ github.workspace }}:/project" \
-e SF_ORG_INSTANCE_URL="${{ secrets.SF_ORG_INSTANCE_URL }}" \
sfdt deploy --skip-preflightAI 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