Commit c2504395 authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

build(api_gateway): 使 pip 配置在构建时可自定义

parent 80cb4b8a
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -3,6 +3,10 @@
BUILD_NUMBER ?= latest
HARBOR_PROJECT ?= 
SKIP_JS9 ?= 1
PIP_INDEX_URL ?=
PIP_TRUSTED_HOST ?=
PIP_DEFAULT_TIMEOUT ?= 120
PIP_RETRIES ?= 5

# 第三方依赖镜像清单文件
REQ_FILE := required-images.txt
@@ -23,6 +27,14 @@ ifneq ($(strip $(HARBOR_PROJECT)),)
ANSIBLE_EXTRA_VARS += -e harbor_project=$(HARBOR_PROJECT)
endif

API_GATEWAY_BUILD_ARGS := --build-arg PIP_DEFAULT_TIMEOUT=$(PIP_DEFAULT_TIMEOUT) --build-arg PIP_RETRIES=$(PIP_RETRIES)
ifneq ($(strip $(PIP_INDEX_URL)),)
API_GATEWAY_BUILD_ARGS += --build-arg PIP_INDEX_URL=$(PIP_INDEX_URL)
endif
ifneq ($(strip $(PIP_TRUSTED_HOST)),)
API_GATEWAY_BUILD_ARGS += --build-arg PIP_TRUSTED_HOST=$(PIP_TRUSTED_HOST)
endif

help:
	@echo "======================================================================"
	@echo "		 CSST Airflow Operations & Delivery		   "
@@ -92,7 +104,7 @@ build:
				mkdir -p ./api_gateway/ccds; \
				rsync -a --delete --exclude ".git" --exclude "__pycache__" ../external/ccds/ ./api_gateway/ccds/; \
		fi; \
	docker build --pull --no-cache -q -t $(TARGET_API_GATEWAY) ./api_gateway; \
	docker build --pull --no-cache -q $(API_GATEWAY_BUILD_ARGS) -t $(TARGET_API_GATEWAY) ./api_gateway; \
	echo "[$$(($$total+3))/$${total_imgs}] Building Task Portal Image ($(TARGET_TASK_PORTAL)) with BUILD_NUMBER=$(BUILD_NUMBER)..."; \
	docker build --pull --no-cache -q --build-arg VITE_BUILD_NUMBER=$(BUILD_NUMBER) --build-arg VITE_BUILD_TIME="$(shell date '+%Y-%m-%d %H:%M:%S')" -t $(TARGET_TASK_PORTAL) ./frontend_vue; \
	if [ "$(SKIP_JS9)" != "1" ]; then \
+13 −9
Original line number Diff line number Diff line
@@ -2,20 +2,24 @@ FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
ARG PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
ARG PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn
ARG PIP_INDEX_URL
ARG PIP_TRUSTED_HOST
ARG PIP_DEFAULT_TIMEOUT=120
ARG PIP_RETRIES=5
ENV PIP_INDEX_URL=${PIP_INDEX_URL}
ENV PIP_TRUSTED_HOST=${PIP_TRUSTED_HOST}
ENV PIP_DEFAULT_TIMEOUT=${PIP_DEFAULT_TIMEOUT}
ENV PIP_RETRIES=${PIP_RETRIES}

COPY csst-dfs-client /app/csst-dfs-client/
COPY ccds /app/ccds/
RUN pip install --no-cache-dir -r requirements.txt && \
    if [ -f "/app/csst-dfs-client/setup.py" ] || [ -f "/app/csst-dfs-client/pyproject.toml" ]; then pip install --no-cache-dir /app/csst-dfs-client/; fi
RUN if [ -f "/app/ccds/setup.py" ] || [ -f "/app/ccds/pyproject.toml" ]; then pip install --no-cache-dir /app/ccds/; fi
RUN set -e; \
    pip_args="--no-cache-dir --default-timeout=${PIP_DEFAULT_TIMEOUT} --retries=${PIP_RETRIES}"; \
    if [ -n "${PIP_INDEX_URL}" ]; then pip_args="$pip_args -i ${PIP_INDEX_URL}"; fi; \
    if [ -n "${PIP_TRUSTED_HOST}" ]; then pip_args="$pip_args --trusted-host ${PIP_TRUSTED_HOST}"; fi; \
    pip install $pip_args -r requirements.txt; \
    if [ -f "/app/csst-dfs-client/setup.py" ] || [ -f "/app/csst-dfs-client/pyproject.toml" ]; then pip install $pip_args /app/csst-dfs-client/; fi
RUN set -e; \
    pip_args="--no-cache-dir --default-timeout=${PIP_DEFAULT_TIMEOUT} --retries=${PIP_RETRIES}"; \
    if [ -n "${PIP_INDEX_URL}" ]; then pip_args="$pip_args -i ${PIP_INDEX_URL}"; fi; \
    if [ -n "${PIP_TRUSTED_HOST}" ]; then pip_args="$pip_args --trusted-host ${PIP_TRUSTED_HOST}"; fi; \
    if [ -f "/app/ccds/setup.py" ] || [ -f "/app/ccds/pyproject.toml" ]; then pip install $pip_args /app/ccds/; fi

COPY . .