-
Notifications
You must be signed in to change notification settings - Fork 178
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add docker release to the full release process (#963)
* add docker release to the full release process for final releases * add docker to dependabot config * add clarifying comments, distinguishing the dev and prod docker images * update dev Dockerfile * add version pins to Dockerfile * add and update make recipes for both versions * pin dev docker to py3.8 * remove platform build arg, pin python deps, update repo ref to commit ref * docker release requires the github release tag * update readme to align with the new container
- Loading branch information
1 parent
7d51395
commit 8b75a53
Showing
11 changed files
with
196 additions
and
181 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# this image gets published to GHCR for production use | ||
ARG py_version=3.10.7 | ||
|
||
FROM python:$py_version-slim-bullseye as base | ||
|
||
RUN apt-get update \ | ||
&& apt-get dist-upgrade -y \ | ||
&& apt-get install -y --no-install-recommends \ | ||
build-essential=12.9 \ | ||
ca-certificates=20210119 \ | ||
git=1:2.30.2-1+deb11u2 \ | ||
libpq-dev=13.14-0+deb11u1 \ | ||
make=4.3-4.1 \ | ||
openssh-client=1:8.4p1-5+deb11u3 \ | ||
software-properties-common=0.96.20.2-2.1 \ | ||
&& apt-get clean \ | ||
&& rm -rf \ | ||
/var/lib/apt/lists/* \ | ||
/tmp/* \ | ||
/var/tmp/* | ||
|
||
ENV PYTHONIOENCODING=utf-8 | ||
ENV LANG=C.UTF-8 | ||
|
||
RUN python -m pip install --upgrade "pip==24.0" "setuptools==69.2.0" "wheel==0.43.0" --no-cache-dir | ||
|
||
|
||
FROM base as dbt-snowflake | ||
|
||
ARG commit_ref=main | ||
|
||
HEALTHCHECK CMD dbt --version || exit 1 | ||
|
||
WORKDIR /usr/app/dbt/ | ||
ENTRYPOINT ["dbt"] | ||
|
||
RUN python -m pip install --no-cache-dir "dbt-snowflake @ git+https://github.com/dbt-labs/dbt-snowflake@${commit_ref}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# Docker for dbt | ||
This docker file is suitable for building dbt Docker images locally or using with CI/CD to automate populating a container registry. | ||
|
||
|
||
## Building an image: | ||
This Dockerfile can create images for the following target: `dbt-snowflake` | ||
|
||
In order to build a new image, run the following docker command. | ||
```shell | ||
docker build --tag <your_image_name> --target dbt-snowflake <path/to/dockerfile> | ||
``` | ||
--- | ||
> **Note:** Docker must be configured to use [BuildKit](https://docs.docker.com/develop/develop-images/build_enhancements/) in order for images to build properly! | ||
--- | ||
|
||
By default the image will be populated with the latest version of `dbt-snowflake` on `main`. | ||
If you need to use a different version you can specify it by git ref using the `--build-arg` flag: | ||
```shell | ||
docker build --tag <your_image_name> \ | ||
--target dbt-snowflake \ | ||
--build-arg commit_ref=<commit_ref> \ | ||
<path/to/dockerfile> | ||
``` | ||
|
||
### Examples: | ||
To build an image named "my-dbt" that supports Snowflake using the latest releases: | ||
```shell | ||
cd dbt-core/docker | ||
docker build --tag my-dbt --target dbt-snowflake . | ||
``` | ||
|
||
To build an image named "my-other-dbt" that supports Snowflake using the adapter version 1.0.0b1: | ||
```shell | ||
cd dbt-core/docker | ||
docker build \ | ||
--tag my-other-dbt \ | ||
--target dbt-snowflake \ | ||
--build-arg commit_ref=v1.0.0b1 \ | ||
. | ||
``` | ||
|
||
## Running an image in a container: | ||
The `ENTRYPOINT` for this Dockerfile is the command `dbt` so you can bind-mount your project to `/usr/app` and use dbt as normal: | ||
```shell | ||
docker run \ | ||
--network=host \ | ||
--mount type=bind,source=path/to/project,target=/usr/app \ | ||
--mount type=bind,source=path/to/profiles.yml,target=/root/.dbt/profiles.yml \ | ||
my-dbt \ | ||
ls | ||
``` | ||
--- | ||
**Notes:** | ||
* 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/database host. | ||
|
||
--- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# this image does not get published, it is intended for local development only, see `Makefile` for usage | ||
FROM ubuntu:22.04 as base | ||
|
||
# prevent python installation from asking for time zone region | ||
ARG DEBIAN_FRONTEND=noninteractive | ||
|
||
# add python repository | ||
RUN apt-get update \ | ||
&& apt-get install -y software-properties-common=0.99.22.9 \ | ||
&& add-apt-repository -y ppa:deadsnakes/ppa \ | ||
&& apt-get clean \ | ||
&& rm -rf \ | ||
/var/lib/apt/lists/* \ | ||
/tmp/* \ | ||
/var/tmp/* | ||
|
||
# install python | ||
RUN apt-get update \ | ||
&& apt-get install -y --no-install-recommends \ | ||
build-essential=12.9ubuntu3 \ | ||
git-all=1:2.34.1-1ubuntu1.10 \ | ||
python3.8=3.8.19-1+jammy1 \ | ||
python3.8-dev=3.8.19-1+jammy1 \ | ||
python3.8-distutils=3.8.19-1+jammy1 \ | ||
python3.8-venv=3.8.19-1+jammy1 \ | ||
python3-pip=22.0.2+dfsg-1ubuntu0.4 \ | ||
python3-wheel=0.37.1-2ubuntu0.22.04.1 \ | ||
&& apt-get clean \ | ||
&& rm -rf \ | ||
/var/lib/apt/lists/* \ | ||
/tmp/* \ | ||
/var/tmp/* | ||
|
||
# update the default system interpreter to the newly installed version | ||
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 | ||
|
||
|
||
FROM base as dbt-snowflake-dev | ||
|
||
HEALTHCHECK CMD python3 --version || exit 1 | ||
|
||
# send stdout/stderr to terminal | ||
ENV PYTHONUNBUFFERED=1 | ||
|
||
# setup mount for local code | ||
WORKDIR /opt/code | ||
VOLUME /opt/code | ||
|
||
# create a virtual environment | ||
RUN python3 -m venv /opt/venv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# - VERY rudimentary test script to run latest + specific branch image builds and test them all by running `--version` | ||
# TODO: create a real test suite | ||
|
||
clear \ | ||
&& echo "\n\n"\ | ||
"########################################\n"\ | ||
"##### Testing dbt-snowflake latest #####\n"\ | ||
"########################################\n"\ | ||
&& docker build --tag dbt-snowflake \ | ||
--target dbt-snowflake \ | ||
docker \ | ||
&& docker run dbt-snowflake --version \ | ||
\ | ||
&& echo "\n\n"\ | ||
"#########################################\n"\ | ||
"##### Testing dbt-snowflake-1.0.0b1 #####\n"\ | ||
"#########################################\n"\ | ||
&& docker build --tag dbt-snowflake-1.0.0b1 \ | ||
--target dbt-snowflake \ | ||
--build-arg commit_ref=v1.0.0b1 \ | ||
docker \ | ||
&& docker run dbt-snowflake-1.0.0b1 --version |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.