33 строки
1.6 KiB
Docker
33 строки
1.6 KiB
Docker
ARG PYTHON_VERSION=3.11
|
|
# pin Google Cloud SDK to old version due to https://stackoverflow.com/questions/76159439/job-failing-with-error-gcloud-crashed-attributeerror-bool-object-has-no-at
|
|
ARG GOOGLE_CLOUD_SDK_VERSION=417.0.0
|
|
|
|
# use buster image because the default bullseye image released 2021-08-17
|
|
# sha256:ffb6539b4b233743c62170989024c6f56dcefa69a83c4bd9710d4264b19a98c0
|
|
# has updated coreutils that require a newer linux kernel than provided by CircleCI, per
|
|
# https://forums.docker.com/t/multiple-projects-stopped-building-on-docker-hub-operation-not-permitted/92570/6
|
|
# and https://forums.docker.com/t/multiple-projects-stopped-building-on-docker-hub-operation-not-permitted/92570/11
|
|
# --platform=linux/amd64 added to prevent pulling ARM images when run on Apple Silicon
|
|
FROM --platform=linux/amd64 python:${PYTHON_VERSION}-slim-buster AS base
|
|
WORKDIR /app
|
|
|
|
# build typed-ast in separate stage because it requires gcc and libc-dev
|
|
FROM base AS python-deps
|
|
RUN apt-get update -qqy && apt-get install -qqy gcc libc-dev
|
|
COPY requirements.txt ./
|
|
# use --no-deps to work around https://github.com/pypa/pip/issues/9644
|
|
RUN pip install --no-deps -r requirements.txt
|
|
|
|
FROM google/cloud-sdk:${GOOGLE_CLOUD_SDK_VERSION}-alpine AS google-cloud-sdk
|
|
|
|
FROM base
|
|
# add bash for entrypoint
|
|
RUN mkdir -p /usr/share/man/man1 && apt-get update -qqy && apt-get install -qqy bash git
|
|
COPY --from=google-cloud-sdk /google-cloud-sdk /google-cloud-sdk
|
|
ENV PATH /google-cloud-sdk/bin:$PATH
|
|
COPY --from=python-deps /usr/local /usr/local
|
|
COPY .bigqueryrc /root/
|
|
COPY . .
|
|
RUN pip install .
|
|
ENTRYPOINT ["/app/script/entrypoint"]
|