fahmiaziz98 commited on
Commit
067c765
·
1 Parent(s): 2bbdfee

refactor dockerfile 3 fix permission user non root

Browse files
Files changed (2) hide show
  1. Dockerfile +17 -10
  2. 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
- ENV PATH="/home/appuser/.local/bin:$PATH"
 
 
 
 
 
17
 
18
  RUN set -ex \
19
  && addgroup --system --gid 1001 appgroup \
20
- && adduser --system --uid 1001 --gid 1001 --home /home/appuser appuser \
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
- WORKDIR /app
29
-
30
- COPY --from=build /wheels /wheels
31
- COPY requirements.txt .
32
 
33
- RUN pip install --no-cache-dir --no-warn-script-location --no-index --find-links=/wheels -r requirements.txt
 
34
 
35
- COPY . .
36
 
37
  USER appuser
38
 
39
- EXPOSE 7860
40
- CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
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