Using a prebuilt Docker image to install dbt Core in production has a few benefits: it already includes dbt-core, one or more database adapters, and pinned versions of all their dependencies. By contrast,
python -m pip install dbt-core dbt-<adapter> takes longer to run, and will always install the latest compatible versions of every dependency.
You might also be able to use Docker to install and develop locally if you don't have a Python environment set up. Note that running dbt in this manner can be significantly slower if your operating system differs from the system that built the Docker image. If you're a frequent local developer, we recommend that you install dbt Core via Homebrew or pip instead.
- You've installed Docker. For more information, see the Docker site.
- You understand which database adapter(s) you need. For more information, see About dbt adapters.
- You understand how dbt Core is versioned. For more information, see About dbt Core versions.
- You have a general understanding of the dbt, dbt workflow, developing locally in the command line interface (CLI). For more information, see About dbt.
Install a dbt Docker image from Github Packages
Offical dbt docker images are hosted as packages in the
dbt-labs GitHub organization. We maintain images and tags for every version of every database adapter, as well as two tags that update as new versions as released:
latest: Latest overall version of dbt-core + this adapter
<Major>.<Minor>.latest: Latest patch of dbt-core + this adapter for
<Major>.<Minor>version family. For example,
1.1.latestincludes the latest patches for dbt Core v1.1.
Install an image using the
docker pull command:
docker pull ghcr.io/dbt-labs/<db_adapter_name>:<version_tag>
Running a dbt Docker image in a container
ENTRYPOINT for dbt Docker images is the command
dbt. You can bind-mount your project to
/usr/app and use dbt as normal:
docker run \
--mount type=bind,source=path/to/project,target=/usr/app \
--mount type=bind,source=path/to/profiles.yml,target=/root/.dbt/ \
- Bind-mount sources must be an absolute path
- You may need to make adjustments to the docker networking setting depending on the specifics of your data warehouse or database host.
Building your own dbt Docker image
In particular, the Dockerfile supports building images:
- Images that all adapters maintained by dbt Labs
- Images that install one or more third-party adapters
- Images against another system architecture
Please note that, if you go the route of building your own Docker images, we are unable to offer dedicated support for custom use cases. If you run into problems, you are welcome to ask the community for help or open an issue in the
dbt-core repository. If many users are requesting the same enhancement, we will tag the issue
help_wanted and invite community contribution.