chore: import upstream snapshot with attribution
This commit is contained in:
+92
@@ -0,0 +1,92 @@
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# syntax=docker/dockerfile:1.4
|
||||
FROM python:3.11 AS builder
|
||||
|
||||
# Build arguments
|
||||
ARG IS_FIRST_DEPLOYMENT="False"
|
||||
ARG GCLOUD_PROJECT=""
|
||||
ARG ENVIRONMENT="development"
|
||||
ARG FRONTEND_URL=""
|
||||
ARG BIG_QUERY_DATASET=""
|
||||
ARG VERTEX_AI_LOCATION=""
|
||||
ARG VERTEX_AI_DATASTORE_ID=""
|
||||
ARG VERTEX_AI_ENGINE_ID=""
|
||||
|
||||
# Environment variables for the build process
|
||||
ENV IS_FIRST_DEPLOYMENT=$IS_FIRST_DEPLOYMENT
|
||||
ENV GCLOUD_PROJECT=$GCLOUD_PROJECT
|
||||
ENV ENVIRONMENT=$ENVIRONMENT
|
||||
ENV FRONTEND_URL=$FRONTEND_URL
|
||||
ENV BIG_QUERY_DATASET=$BIG_QUERY_DATASET
|
||||
ENV VERTEX_AI_LOCATION=$VERTEX_AI_LOCATION
|
||||
ENV VERTEX_AI_DATASTORE_ID=$VERTEX_AI_DATASTORE_ID
|
||||
ENV VERTEX_AI_ENGINE_ID=$VERTEX_AI_ENGINE_ID
|
||||
|
||||
WORKDIR /code
|
||||
|
||||
COPY . .
|
||||
COPY setup.py ./setup.py
|
||||
RUN pip install --no-cache-dir -r /code/requirements.txt
|
||||
|
||||
RUN --mount=type=secret,id=gcp_credentials,target=/tmp/gcp_adc.json,required=true \
|
||||
if [ "$IS_FIRST_DEPLOYMENT" = "True" ]; then \
|
||||
echo "--- Running first deployment setup (IS_FIRST_DEPLOYMENT=True) ---"; \
|
||||
echo "Using GCLOUD_PROJECT=${GCLOUD_PROJECT} for setup"; \
|
||||
\
|
||||
if [ ! -f /tmp/gcp_adc.json ]; then \
|
||||
echo "CRITICAL ERROR: GCP credentials secret was expected but not mounted to /tmp/gcp_adc.json" >&2; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "DEBUG: GCP credentials secret successfully mounted to /tmp/gcp_adc.json"; \
|
||||
\
|
||||
# Set GOOGLE_APPLICATION_CREDENTIALS specifically for this RUN command's execution context
|
||||
export GOOGLE_APPLICATION_CREDENTIALS=/tmp/gcp_adc.json; \
|
||||
echo "DEBUG: GOOGLE_APPLICATION_CREDENTIALS for setup is set to: $GOOGLE_APPLICATION_CREDENTIALS"; \
|
||||
\
|
||||
echo "Executing setup.py ..."; \
|
||||
# Now setup.py can make requests to GCP with provided credentials
|
||||
python /code/setup.py || { echo "setup.py with failed!"; exit 1; }; \
|
||||
echo "--- First deployment setup finished ---"; \
|
||||
else \
|
||||
echo "--- IS_FIRST_DEPLOYMENT is False, skipping first deployment setup. ---"; \
|
||||
fi
|
||||
|
||||
|
||||
FROM python:3.11-slim AS final
|
||||
|
||||
ARG GCLOUD_PROJECT=""
|
||||
ARG GOOGLE_APPLICATION_CREDENTIALS=""
|
||||
ARG ENVIRONMENT="development"
|
||||
ARG FRONTEND_URL=""
|
||||
ARG BIG_QUERY_DATASET=""
|
||||
|
||||
# Environment variables for the build process
|
||||
ENV GCLOUD_PROJECT=$GCLOUD_PROJECT
|
||||
ENV GOOGLE_APPLICATION_CREDENTIALS="/root/.config/gcloud/application_default_credentials.json"
|
||||
ENV ENVIRONMENT=$ENVIRONMENT
|
||||
ENV FRONTEND_URL=$FRONTEND_URL
|
||||
ENV BIG_QUERY_DATASET=$BIG_QUERY_DATASET
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=builder /code/requirements.txt /app/requirements.txt
|
||||
RUN pip install --no-cache-dir -r /app/requirements.txt
|
||||
|
||||
COPY --from=builder /code/main.py /app/main.py
|
||||
COPY --from=builder /code/src /app/src
|
||||
|
||||
EXPOSE 8080
|
||||
ENTRYPOINT ["gunicorn", "main:app", "--workers=4", "--worker-class=uvicorn.workers.UvicornWorker", "--timeout=36000", "--bind=0.0.0.0:8080"]
|
||||
Reference in New Issue
Block a user