diff --git a/.github/workflows/_publish-docker.yml b/.github/workflows/_publish-docker.yml new file mode 100644 index 000000000..3f49ca3f7 --- /dev/null +++ b/.github/workflows/_publish-docker.yml @@ -0,0 +1,66 @@ +name: "# Docker release" +run-name: "Docker release - ${{ github.actor }} - package:${{ inputs.package }} deploy-to:${{ inputs.deploy-to }} branch:${{ inputs.branch }}" + +permissions: + packages: write + +on: + workflow_call: + inputs: + package: + description: "Choose the package to publish" + type: string + required: true + deploy-to: + description: "Choose whether to publish to test or prod" + type: string + default: "prod" + version: + description: "Choose the version to publish" + type: string + required: true + workflow_dispatch: + inputs: + package: + description: "Choose the package to publish" + type: choice + options: + - "dbt-athena" + - "dbt-bigquery" + - "dbt-postgres" + - "dbt-redshift" + - "dbt-snowflake" + - "dbt-spark" + deploy-to: + description: "Choose whether to publish to test or prod" + type: environment + default: "test" + version: + description: "Choose the version to publish" + type: string + required: true + +jobs: + publish: + runs-on: ${{ vars.DEFAULT_RUNNER }} + steps: + - id: tags + uses: dbt-labs/dbt-release/.github/actions/latest-wrangler@main + with: + package_name: ${{ inputs.package }} + new_version: ${{ inputs.version_number }} + github_token: ${{ secrets.GITHUB_TOKEN }} + - uses: docker/setup-buildx-action@v3 + - uses: docker/login-action@v3 + with: + registry: 'ghcr.io' + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - uses: docker/build-push-action@v6 + with: + push: ${{ inputs.deploy-to == 'prod' }} + target: ${{ inputs.package }} + file: ./Dockerfile + platforms: 'linux/amd64' + tags: ${{ steps.tags.outputs.tags }} + build-args: version=v${{ inputs.version }} py_version=${{ vars.DOCKER_PYTHON_VERSION }} diff --git a/.github/workflows/_publish-github.yml b/.github/workflows/_publish-github.yml index 066a1f2c2..52d463317 100644 --- a/.github/workflows/_publish-github.yml +++ b/.github/workflows/_publish-github.yml @@ -46,7 +46,7 @@ env: jobs: publish: - runs-on: ubuntu-latest + runs-on: ${{ vars.DEFAULT_RUNNER }} defaults: run: working-directory: ./${{ inputs.package }} diff --git a/.github/workflows/publish-oss.yml b/.github/workflows/publish-oss.yml index 151e1883e..3cb7049ce 100644 --- a/.github/workflows/publish-oss.yml +++ b/.github/workflows/publish-oss.yml @@ -34,6 +34,7 @@ on: options: - "pypi" - "github" + - "docker" - "all" skip-unit-tests: description: "Skip running unit tests" @@ -205,6 +206,18 @@ jobs: branch: ${{ inputs.branch }} secrets: inherit + publish-docker: + if: always() && !failure() && contains(fromJSON('["docker", "all"]'), inputs.target) + needs: + - merge-changes + - bump-version + uses: ./.github/workflows/_publish-docker.yml + with: + package: ${{ inputs.package }} + deploy-to: ${{ inputs.deploy-to }} + version: ${{ needs.bump-version.outputs.final }} + secrets: inherit + clean-up: if: always() needs: diff --git a/dbt-bigquery/docker/dev.Dockerfile b/dbt-bigquery/Dockerfile similarity index 100% rename from dbt-bigquery/docker/dev.Dockerfile rename to dbt-bigquery/Dockerfile diff --git a/dbt-bigquery/docker/Dockerfile b/dbt-bigquery/docker/Dockerfile deleted file mode 100644 index 8f371d6b4..000000000 --- a/dbt-bigquery/docker/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# 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 \ - git=1:2.30.2-1+deb11u2 \ - libpq-dev=13.18-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-bigquery - -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-bigquery @ git+https://github.com/dbt-labs/dbt-bigquery@${commit_ref}" diff --git a/dbt-bigquery/docker/README.md b/dbt-bigquery/docker/README.md deleted file mode 100644 index 8c60deaa3..000000000 --- a/dbt-bigquery/docker/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# 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-bigquery` - -In order to build a new image, run the following docker command. -```shell -docker build --tag --target dbt-bigquery -``` ---- -> **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-bigquery` 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 \ - --target dbt-bigquery \ - --build-arg commit_ref= \ - -``` - -### 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-bigquery . -``` - -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-bigquery \ - --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. - ---- diff --git a/dbt-postgres/docker/dev.Dockerfile b/dbt-postgres/Dockerfile similarity index 98% rename from dbt-postgres/docker/dev.Dockerfile rename to dbt-postgres/Dockerfile index 280ff39f7..dc8a6fe10 100644 --- a/dbt-postgres/docker/dev.Dockerfile +++ b/dbt-postgres/Dockerfile @@ -39,7 +39,7 @@ RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1 RUN python -m pip install --upgrade "hatch==1.13.0" --no-cache-dir --compile -FROM base AS dbt-postgres-dev +FROM base AS dbt-postgres HEALTHCHECK CMD python --version || exit 1 diff --git a/dbt-postgres/docker/Dockerfile b/dbt-postgres/docker/Dockerfile deleted file mode 100644 index c26143947..000000000 --- a/dbt-postgres/docker/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# this image gets published to GHCR for production use -ARG py_version=3.12.4 - -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.18-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-postgres - -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-postgres @ git+https://github.com/dbt-labs/dbt-postgres@${commit_ref}" diff --git a/dbt-redshift/docker/dev.Dockerfile b/dbt-redshift/Dockerfile similarity index 100% rename from dbt-redshift/docker/dev.Dockerfile rename to dbt-redshift/Dockerfile diff --git a/dbt-redshift/docker/Dockerfile b/dbt-redshift/docker/Dockerfile deleted file mode 100644 index a0f987e45..000000000 --- a/dbt-redshift/docker/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# 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 \ - git=1:2.30.2-1+deb11u2 \ - libpq-dev=13.18-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-redshift - -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-redshift @ git+https://github.com/dbt-labs/dbt-redshift@${commit_ref}" diff --git a/dbt-redshift/docker/README.md b/dbt-redshift/docker/README.md deleted file mode 100644 index 5be9e56ef..000000000 --- a/dbt-redshift/docker/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# 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-redshift` - -In order to build a new image, run the following docker command. -```shell -docker build --tag --target dbt-redshift -``` ---- -> **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-redshift` 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 \ - --target dbt-redshift \ - --build-arg commit_ref= \ - -``` - -### 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-redshift . -``` - -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-redshift \ - --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. - ---- diff --git a/dbt-snowflake/docker/dev.Dockerfile b/dbt-snowflake/Dockerfile similarity index 100% rename from dbt-snowflake/docker/dev.Dockerfile rename to dbt-snowflake/Dockerfile diff --git a/dbt-snowflake/docker/Dockerfile b/dbt-snowflake/docker/Dockerfile deleted file mode 100644 index 16060db61..000000000 --- a/dbt-snowflake/docker/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# 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 \ - git=1:2.30.2-1+deb11u2 \ - libpq-dev=13.18-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}" diff --git a/dbt-snowflake/docker/README.md b/dbt-snowflake/docker/README.md deleted file mode 100644 index 95ecde101..000000000 --- a/dbt-snowflake/docker/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# 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 --target dbt-snowflake -``` ---- -> **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 \ - --target dbt-snowflake \ - --build-arg commit_ref= \ - -``` - -### 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. - ---- diff --git a/dbt-snowflake/docker/test.sh b/dbt-snowflake/docker/test.sh deleted file mode 100755 index 79311b6c9..000000000 --- a/dbt-snowflake/docker/test.sh +++ /dev/null @@ -1,22 +0,0 @@ -# - 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 diff --git a/dbt-spark/docker/Dockerfile b/dbt-spark/docker/Dockerfile deleted file mode 100644 index 3699ed9a7..000000000 --- a/dbt-spark/docker/Dockerfile +++ /dev/null @@ -1,42 +0,0 @@ -# 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.18-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}" diff --git a/dbt-spark/docker/README.md b/dbt-spark/docker/README.md deleted file mode 100644 index 42ca5e227..000000000 --- a/dbt-spark/docker/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# 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 --target dbt-spark -``` ---- -> **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 \ - --target dbt-spark \ - --build-arg commit_ref= \ - -``` - -### 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=`. -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 \ - -``` - -## 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. - ---- diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..48148f829 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,98 @@ +# this image gets published to GHCR for production use +ARG py_version=3.12.4 + +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.18-0+deb11u1 \ + 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 setuptools wheel --no-cache-dir + + +FROM base AS dbt-bigquery + +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-bigquery==${version}" + + +FROM base AS dbt-postgres + +ARG version + +HEALTHCHECK CMD dbt --version || exit 1 + +WORKDIR /usr/app/dbt/ +ENTRYPOINT ["dbt"] + +RUN python -m pip install --no-cache-dir "dbt-postgres==${version}" + + +FROM base AS dbt-redshift + +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-redshift==${version}" + + +FROM base AS dbt-snowflake + +ARG version + +HEALTHCHECK CMD dbt --version || exit 1 + +WORKDIR /usr/app/dbt/ +ENTRYPOINT ["dbt"] + +RUN python -m pip install --no-cache-dir "dbt-snowflake==${version}" + + +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 apt-get update \ + && apt-get dist-upgrade -y \ + && apt-get install -y --no-install-recommends \ + gcc=4:10.2.1-1 \ + libsasl2-dev=2.1.27+dfsg-2.1+deb11u1 \ + python-dev-is-python2=2.7.18-9 \ + unixodbc-dev=2.3.6-0.1+b1 \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +RUN python -m pip install --no-cache-dir "dbt-spark[${extras}]==${version}" diff --git a/dbt-postgres/docker/README.md b/docker/README.md similarity index 100% rename from dbt-postgres/docker/README.md rename to docker/README.md