1- # 베이스 이미지 선택
2- FROM python:3.13-slim
3-
4-
5- # 시스템 라이브러리 설치
6- RUN apt-get update && apt-get install -y --no-install-recommends \
7- libjpeg-dev \
8- libpng-dev \
9- zlib1g-dev \
10- && rm -rf /var/lib/apt/lists/*
11- # RUN apt-get update && apt-get install -y --no-install-recommends \
12- # curl unzip ca-certificates libaio1 libnsl2 \
13- # && rm -rf /var/lib/apt/lists/*
14- RUN apt-get update && \
15- apt-get install -y --no-install-recommends \
16- curl \
17- unzip \
18- ca-certificates \
19- libaio1 \
20- libnsl2 && \
21- apt-get clean && \
22- rm -rf /var/lib/apt/lists/*
23-
24- # Oracle Instant Client 설치
25- ARG IC_VER_DIR=instantclient_23_9
26- ARG IC_ZIP=instantclient-basiclite-linux.x64-23.9.0.25.07.zip
27- COPY docker/instantclient/${IC_ZIP} /tmp/${IC_ZIP}
28- RUN mkdir -p /opt/oracle \
29- && unzip /tmp/${IC_ZIP} -d /opt/oracle \
30- && rm /tmp/${IC_ZIP}
1+ # ----- 디버깅용 Dockerfile 시작 -----
312
32- # 런타임에서 클라이언트 찾도록 환경변수
33- ENV LD_LIBRARY_PATH=/opt/oracle/${IC_VER_DIR}
34- ENV ORACLE_CLIENT_LIB_DIR=/opt/oracle/${IC_VER_DIR}
35- ENV LD_LIBRARY_PATH=/opt/oracle/${IC_VER_DIR}
36-
37- # 작업 디렉토리 설정
38- WORKDIR /app
39-
40- # 의존성 파일 복사 및 설치
41- COPY requirements.txt .
3+ FROM python:3.13-slim
424
43- # 의존성 설치 후 문제가 되는 opencv-python을 강제로 삭제
44- RUN pip install --no-cache-dir --upgrade -r requirements.txt && \
45- pip uninstall -y opencv-python opencv-python-headless && \
46- pip install opencv-python-headless==4.12.0.88 && \
47- pip install --no-cache-dir --upgrade pip setuptools wheel
5+ # 1단계: OS 정보와 패키지 저장소 목록을 직접 확인합니다.
6+ # 이 로그를 통해 어떤 서버에서 패키지를 받아오려 하는지 알 수 있습니다.
7+ RUN cat /etc/os-release && \
8+ echo "---" && \
9+ cat /etc/apt/sources.list
4810
49- # 프로젝트 전체 코드 복사
50- COPY ./app ./app
51- COPY ./models ./models
52- # .env 파일 복사
53- COPY ./.env ./.env
11+ # 2단계: 패키지 목록 업데이트를 단독으로 실행하여 네트워크 오류 등이 있는지 확인합니다.
12+ # 여기서 나오는 로그가 가장 중요합니다. (예: 404 Not Found, Could not resolve host 등)
13+ RUN apt-get update
5414
55- # 컨테이너 내부에서 사용할 포트
56- EXPOSE 8082
15+ # 3단계: 업데이트된 목록에서 libaio1을 검색할 수 있는지 확인합니다.
16+ # 여기서 아무것도 출력되지 않는다면, update가 실패했거나 저장소 목록에 문제가 있는 것입니다.
17+ RUN apt-cache search libaio1
5718
58- # 컨테이너 시작 명령어
59- # 0.0.0.0 호스트로 실행해야 외부에서 접근 가능합니다.
60- CMD ["uvicorn" , "app.main:app" , "--host" , "0.0.0.0" , "--port" , "8082" ]
19+ # ----- 디버깅용 Dockerfile 끝 -----
0 commit comments