-
Notifications
You must be signed in to change notification settings - Fork 234
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 for final releases (#…
…1004) * add docker release to release pipeline * update docker release to align with other adapters, add dev docker * remove defaulted input for docker package, override default for docker release image * fix docker release dependent steps * only release docker when not testing, allow to only release to docker * remove dev container * remove test script * rename the spark Dockerfile to make space for the release Dockerfile * move the release Dockerfile into ./docker --------- Co-authored-by: Emily Rockman <[email protected]>
- Loading branch information
1 parent
6f8ff60
commit 944dbea
Showing
7 changed files
with
187 additions
and
62 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
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 |
---|---|---|
@@ -1,30 +1,42 @@ | ||
ARG OPENJDK_VERSION=8 | ||
FROM eclipse-temurin:${OPENJDK_VERSION}-jre | ||
|
||
ARG BUILD_DATE | ||
ARG SPARK_VERSION=3.3.2 | ||
ARG HADOOP_VERSION=3 | ||
|
||
LABEL org.label-schema.name="Apache Spark ${SPARK_VERSION}" \ | ||
org.label-schema.build-date=$BUILD_DATE \ | ||
org.label-schema.version=$SPARK_VERSION | ||
|
||
ENV SPARK_HOME /usr/spark | ||
ENV PATH="/usr/spark/bin:/usr/spark/sbin:${PATH}" | ||
|
||
RUN apt-get update && \ | ||
apt-get install -y wget netcat procps libpostgresql-jdbc-java && \ | ||
wget -q "http://archive.apache.org/dist/spark/spark-${SPARK_VERSION}/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" && \ | ||
tar xzf "spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" && \ | ||
rm "spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" && \ | ||
mv "spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}" /usr/spark && \ | ||
ln -s /usr/share/java/postgresql-jdbc4.jar /usr/spark/jars/postgresql-jdbc4.jar && \ | ||
apt-get remove -y wget && \ | ||
apt-get autoremove -y && \ | ||
apt-get clean | ||
|
||
COPY entrypoint.sh /scripts/ | ||
RUN chmod +x /scripts/entrypoint.sh | ||
|
||
ENTRYPOINT ["/scripts/entrypoint.sh"] | ||
CMD ["--help"] | ||
# this image gets published to GHCR for production use | ||
ARG py_version=3.11.2 | ||
|
||
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 \ | ||
gcc=4:10.2.1-1 \ | ||
git=1:2.30.2-1+deb11u2 \ | ||
libpq-dev=13.14-0+deb11u1 \ | ||
libsasl2-dev=2.1.27+dfsg-2.1+deb11u1 \ | ||
make=4.3-4.1 \ | ||
openssh-client=1:8.4p1-5+deb11u3 \ | ||
python-dev-is-python2=2.7.18-9 \ | ||
software-properties-common=0.96.20.2-2.1 \ | ||
unixodbc-dev=2.3.6-0.1+b1 \ | ||
&& 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-spark | ||
|
||
ARG commit_ref=main | ||
ARG extras=all | ||
|
||
HEALTHCHECK CMD dbt --version || exit 1 | ||
|
||
WORKDIR /usr/app/dbt/ | ||
ENTRYPOINT ["dbt"] | ||
|
||
RUN python -m pip install --no-cache-dir "dbt-spark[${extras}] @ git+https://github.com/dbt-labs/dbt-spark@${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,70 @@ | ||
# Docker for dbt | ||
`Dockerfile` 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-spark` | ||
|
||
In order to build a new image, run the following docker command. | ||
```shell | ||
docker build --tag <your_image_name> --target dbt-spark <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-spark` 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-spark \ | ||
--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-spark . | ||
``` | ||
|
||
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-spark \ | ||
--build-arg commit_ref=v1.0.0b1 \ | ||
. | ||
``` | ||
|
||
## Special cases | ||
There are a few special cases worth noting: | ||
* The `dbt-spark` database adapter comes in three different versions named `PyHive`, `ODBC`, and the default `all`. | ||
If you wish to override this you can use the `--build-arg` flag with the value of `extras=<extras_name>`. | ||
See the [docs](https://docs.getdbt.com/reference/warehouse-profiles/spark-profile) for more information. | ||
```shell | ||
docker build --tag my_dbt \ | ||
--target dbt-spark \ | ||
--build-arg commit_ref=v1.0.0b1 \ | ||
--build-arg extras=PyHive \ | ||
<path/to/dockerfile> | ||
``` | ||
|
||
## 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,30 @@ | ||
ARG OPENJDK_VERSION=8 | ||
FROM eclipse-temurin:${OPENJDK_VERSION}-jre | ||
|
||
ARG BUILD_DATE | ||
ARG SPARK_VERSION=3.3.2 | ||
ARG HADOOP_VERSION=3 | ||
|
||
LABEL org.label-schema.name="Apache Spark ${SPARK_VERSION}" \ | ||
org.label-schema.build-date=$BUILD_DATE \ | ||
org.label-schema.version=$SPARK_VERSION | ||
|
||
ENV SPARK_HOME /usr/spark | ||
ENV PATH="/usr/spark/bin:/usr/spark/sbin:${PATH}" | ||
|
||
RUN apt-get update && \ | ||
apt-get install -y wget netcat procps libpostgresql-jdbc-java && \ | ||
wget -q "http://archive.apache.org/dist/spark/spark-${SPARK_VERSION}/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" && \ | ||
tar xzf "spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" && \ | ||
rm "spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz" && \ | ||
mv "spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}" /usr/spark && \ | ||
ln -s /usr/share/java/postgresql-jdbc4.jar /usr/spark/jars/postgresql-jdbc4.jar && \ | ||
apt-get remove -y wget && \ | ||
apt-get autoremove -y && \ | ||
apt-get clean | ||
|
||
COPY entrypoint.sh /scripts/ | ||
RUN chmod +x /scripts/entrypoint.sh | ||
|
||
ENTRYPOINT ["/scripts/entrypoint.sh"] | ||
CMD ["--help"] |