Spaces:
Sleeping
Sleeping
fahmiaziz98
commited on
Commit
·
067c765
1
Parent(s):
2bbdfee
refactor dockerfile 3 fix permission user non root
Browse files- Dockerfile +17 -10
- scripts/s3.py +2 -2
Dockerfile
CHANGED
@@ -11,31 +11,38 @@ COPY requirements.txt .
|
|
11 |
|
12 |
RUN pip install --upgrade pip && pip wheel --no-cache-dir --wheel-dir /wheels -r requirements.txt
|
13 |
|
|
|
14 |
FROM python:3.11.11-slim AS final
|
15 |
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
RUN set -ex \
|
19 |
&& addgroup --system --gid 1001 appgroup \
|
20 |
-
&& adduser --system --uid 1001 --gid 1001 --home
|
21 |
&& apt-get update \
|
22 |
&& apt-get upgrade -y \
|
23 |
&& apt-get install -y libjpeg-dev zlib1g-dev \
|
|
|
|
|
24 |
&& apt-get autoremove -y \
|
25 |
&& apt-get clean -y \
|
26 |
&& rm -rf /var/lib/apt/lists/*
|
27 |
|
28 |
-
|
29 |
-
|
30 |
-
COPY --from=build /wheels /wheels
|
31 |
-
COPY requirements.txt .
|
32 |
|
33 |
-
|
|
|
34 |
|
35 |
-
|
36 |
|
37 |
USER appuser
|
38 |
|
39 |
-
|
40 |
-
|
41 |
|
|
|
11 |
|
12 |
RUN pip install --upgrade pip && pip wheel --no-cache-dir --wheel-dir /wheels -r requirements.txt
|
13 |
|
14 |
+
|
15 |
FROM python:3.11.11-slim AS final
|
16 |
|
17 |
+
WORKDIR /app
|
18 |
+
|
19 |
+
ENV PIP_DEFAULT_TIMEOUT=100 \
|
20 |
+
PYTHONUNBUFFERED=1 \
|
21 |
+
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
22 |
+
PIP_NO_CACHE_DIR=1
|
23 |
|
24 |
RUN set -ex \
|
25 |
&& addgroup --system --gid 1001 appgroup \
|
26 |
+
&& adduser --system --uid 1001 --gid 1001 --no-create-home appuser \
|
27 |
&& apt-get update \
|
28 |
&& apt-get upgrade -y \
|
29 |
&& apt-get install -y libjpeg-dev zlib1g-dev \
|
30 |
+
# 🔨 Buat folder ml-models untuk menyimpan model
|
31 |
+
&& mkdir -p /app/ml-models && chown -R appuser:appgroup /app/ml-models \
|
32 |
&& apt-get autoremove -y \
|
33 |
&& apt-get clean -y \
|
34 |
&& rm -rf /var/lib/apt/lists/*
|
35 |
|
36 |
+
COPY --from=build /app/requirements.txt .
|
37 |
+
RUN pip install -r requirements.txt
|
|
|
|
|
38 |
|
39 |
+
COPY ./artifacts artifacts
|
40 |
+
COPY ./api api
|
41 |
|
42 |
+
EXPOSE 7860
|
43 |
|
44 |
USER appuser
|
45 |
|
46 |
+
CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "7860"]
|
47 |
+
|
48 |
|
scripts/s3.py
CHANGED
@@ -43,7 +43,7 @@ def download_model_from_s3(local_path: str, s3_prefix: str):
|
|
43 |
s3.download_file(BUCKET_NAME, s3_key, local_file)
|
44 |
logger.info(f"Completed download {s3_key} to {local_file}")
|
45 |
except Exception as e:
|
46 |
-
logger(f"Failed to download model from S3: {e}")
|
47 |
raise RuntimeError(f"Error downloading model from S3: {e}")
|
48 |
|
49 |
def upload_image_to_s3(
|
@@ -79,4 +79,4 @@ def upload_image_to_s3(
|
|
79 |
ExpiresIn=3600
|
80 |
)
|
81 |
logger.info(f"Generated presigned URL for {object_name}: {response}")
|
82 |
-
return response
|
|
|
43 |
s3.download_file(BUCKET_NAME, s3_key, local_file)
|
44 |
logger.info(f"Completed download {s3_key} to {local_file}")
|
45 |
except Exception as e:
|
46 |
+
logger.info(f"Failed to download model from S3: {e}")
|
47 |
raise RuntimeError(f"Error downloading model from S3: {e}")
|
48 |
|
49 |
def upload_image_to_s3(
|
|
|
79 |
ExpiresIn=3600
|
80 |
)
|
81 |
logger.info(f"Generated presigned URL for {object_name}: {response}")
|
82 |
+
return response
|