Spaces:
Running
Running
Use new auth lib
Browse files- Dockerfile +5 -16
- app.py +3 -19
Dockerfile
CHANGED
@@ -1,27 +1,16 @@
|
|
1 |
-
FROM google/cloud-sdk:slim AS retriever
|
2 |
-
# Get service account key from HF Spaces' secrets
|
3 |
-
# https://huggingface.co/docs/hub/spaces-sdks-docker#buildtime
|
4 |
-
RUN --mount=type=secret,id=BUILD_CREDENTIALS,mode=0444,required=true \
|
5 |
-
--mount=type=secret,id=BUILD_ASSET_BUCKET,mode=0444,required=true \
|
6 |
-
--mount=type=secret,id=BUILD_ASSET_NAME,mode=0444,required=true \
|
7 |
-
cat /run/secrets/BUILD_CREDENTIALS > /tmp/creds.json && \
|
8 |
-
/bin/gcloud auth activate-service-account --key-file=/tmp/creds.json > /dev/null 2>&1 && \
|
9 |
-
GOOGLE_APPLICATION_CREDENTIALS=/tmp/creds.json /bin/gcloud storage cp gs://$(cat /run/secrets/BUILD_ASSET_BUCKET)/$(cat /run/secrets/BUILD_ASSET_NAME) /tmp/ > /dev/null 2>&1 && \
|
10 |
-
rm /tmp/creds.json
|
11 |
-
|
12 |
FROM python:3.11-slim AS gradio
|
13 |
RUN useradd -m -u 1000 app
|
14 |
USER app
|
15 |
ENV HOME=/home/app \
|
16 |
-
|
17 |
WORKDIR ${HOME}
|
18 |
-
COPY --from=retriever /tmp/*_linux_amd64.tar.gz ${HOME}/
|
19 |
-
RUN tar -xf *_linux_amd64.tar.gz && rm *_linux_amd64.tar.gz
|
20 |
-
|
21 |
COPY . .
|
|
|
|
|
|
|
22 |
RUN pip install --no-cache-dir -r requirements.txt
|
23 |
RUN --mount=type=secret,id=LLM_CREDENTIALS,mode=0444,required=true \
|
24 |
-
|
25 |
EXPOSE 7860
|
26 |
|
27 |
ENV GRADIO_SERVER_NAME="0.0.0.0"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
FROM python:3.11-slim AS gradio
|
2 |
RUN useradd -m -u 1000 app
|
3 |
USER app
|
4 |
ENV HOME=/home/app \
|
5 |
+
PATH=/home/app/.local/bin:$PATH
|
6 |
WORKDIR ${HOME}
|
|
|
|
|
|
|
7 |
COPY . .
|
8 |
+
# https://huggingface.co/docs/hub/spaces-sdks-docker#buildtime
|
9 |
+
RUN --mount=type=secret,id=EXTRA_INDEX_URL,mode=0444,required=true \
|
10 |
+
pip install --no-cache-dir --extra-index-url=$(cat /run/secrets/EXTRA_INDEX_URL) cycloud-sdk-python-auth > /dev/null 2>&1
|
11 |
RUN pip install --no-cache-dir -r requirements.txt
|
12 |
RUN --mount=type=secret,id=LLM_CREDENTIALS,mode=0444,required=true \
|
13 |
+
cat /run/secrets/LLM_CREDENTIALS > ${HOME}/credentials.json
|
14 |
EXPOSE 7860
|
15 |
|
16 |
ENV GRADIO_SERVER_NAME="0.0.0.0"
|
app.py
CHANGED
@@ -4,6 +4,7 @@ import httpx
|
|
4 |
import subprocess
|
5 |
import os
|
6 |
from openai import OpenAI
|
|
|
7 |
|
8 |
from const import (
|
9 |
LLM_BASE_URL,
|
@@ -19,27 +20,10 @@ from const import (
|
|
19 |
)
|
20 |
|
21 |
|
22 |
-
def get_token() -> str:
|
23 |
-
try:
|
24 |
-
t = (
|
25 |
-
subprocess.run(
|
26 |
-
AUTH_CMD,
|
27 |
-
stdout=subprocess.PIPE,
|
28 |
-
stderr=subprocess.DEVNULL,
|
29 |
-
env=os.environ.copy(),
|
30 |
-
)
|
31 |
-
.stdout.decode("utf-8")
|
32 |
-
.strip()
|
33 |
-
)
|
34 |
-
assert t, "Failed to get auth token"
|
35 |
-
return t
|
36 |
-
except Exception:
|
37 |
-
raise ValueError("Failed to get auth token")
|
38 |
-
|
39 |
-
|
40 |
def get_headers(host: str) -> dict:
|
|
|
41 |
return {
|
42 |
-
"Authorization": f"Bearer {
|
43 |
"Host": host,
|
44 |
"Accept": "application/json",
|
45 |
"Content-Type": "application/json",
|
|
|
4 |
import subprocess
|
5 |
import os
|
6 |
from openai import OpenAI
|
7 |
+
from cycloud.auth import load_default_credentials
|
8 |
|
9 |
from const import (
|
10 |
LLM_BASE_URL,
|
|
|
20 |
)
|
21 |
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
def get_headers(host: str) -> dict:
|
24 |
+
creds = load_default_credentials()
|
25 |
return {
|
26 |
+
"Authorization": f"Bearer {creds.access_token}",
|
27 |
"Host": host,
|
28 |
"Accept": "application/json",
|
29 |
"Content-Type": "application/json",
|