diff --git a/Dockerfile b/Dockerfile index 9f06ed8..8ffbfb3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,8 @@ FROM python:3.8-slim-bullseye +ENV DBT_PROFILES_DIR=/.dbt +ENV AWS_SHARED_CREDENTIALS_FILE=/.dbt/aws_credentials + ARG UID=1000 ARG GID=1000 @@ -10,9 +13,15 @@ RUN apt-get update \ libpq-dev \ git \ && rm -rf /var/lib/apt/lists/ \ - && groupadd -f -g ${GID} -r dbt && useradd -g dbt -l -m -r -u ${UID} dbt \ && python3 -m pip install -U wheel +ADD entrypoint.sh /entrypoint.sh + +RUN chmod +x /entrypoint.sh \ + && groupadd -f -g ${GID} -r dbt && useradd -g dbt -l -m -r -u ${UID} dbt \ + && mkdir /.dbt \ + && chown dbt:dbt /.dbt + ARG REQUIREMENTS_FILE ARG DBT_VERSION @@ -23,4 +32,5 @@ RUN python3 -m pip install -r /tmp/requirements.txt && rm -f /tmp/requirements. USER dbt WORKDIR /dbt +ENTRYPOINT ["/entrypoint.sh"] CMD ["dbt", "debug"] diff --git a/bin/build.sh b/bin/build.sh index b31d243..969992b 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -23,7 +23,12 @@ else image_name="dbt-${adapter}" fi +tag="ghcr.io/popsql/${image_name}:${version}" + docker build \ --build-arg REQUIREMENTS_FILE="${requirements_file}" \ - --tag "ghcr.io/popsql/${image_name}:${version}" \ + --build-arg DBT_VERSION="${version}" \ + --tag "${tag}" \ "${BASE_DIR}" + +echo "Successfully built image ${tag}" diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..4c580cf --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +if [ -n "${DBT_PROFILES}" ]; then + echo "${DBT_PROFILES}" > /.dbt/profiles.yml + if [ -n "${AWS_CREDENTIALS}" ]; then + echo "${AWS_CREDENTIALS}" > /.dbt/aws_credentials + fi + if [ -n "${BQ_KEYFILE}" ]; then + echo "${BQ_KEYFILE}" > /.dbt/bq_keyfile.json + fi +else + if [ -f ~/.dbt/profiles.yml ]; then + cp ~/.dbt/profiles.yml /.dbt/profiles.yml + fi + if [ -f ~/.aws/credentials ]; then + cp ~/.aws/credentials /.dbt/aws_credentials + fi +fi + +exec "$@"