11# syntax=docker/dockerfile:1
22
3+ # Build stage
4+ FROM python:3.10-alpine3.22 AS builder
5+
6+ # Install build dependencies
7+ COPY requirements.txt .
8+ RUN \
9+ echo "**** install build packages ****" && \
10+ apk add --no-cache --virtual=build-dependencies \
11+ git \
12+ gcc \
13+ musl-dev \
14+ python3-dev \
15+ libffi-dev \
16+ openssl-dev \
17+ cargo && \
18+ echo "**** install icloud app ****" && \
19+ pip install -U --no-cache-dir \
20+ pip \
21+ wheel && \
22+ pip install -U --no-cache-dir -r requirements.txt
23+
24+ # Runtime stage
325FROM python:3.10-alpine3.22
426
527# set version label
@@ -16,58 +38,30 @@ ENV HOME="/app"
1638ENV PUID=911
1739ENV PGID=911
1840
19- # Install system dependencies and create user first for better caching
41+ # Install runtime dependencies and create user
2042RUN \
2143 echo "**** update package repository ****" && \
2244 apk update && \
23- echo "**** install packages ****" && \
45+ echo "**** install runtime packages ****" && \
2446 apk add --no-cache \
25- sudo \
2647 libmagic \
2748 shadow \
28- dumb-init \
2949 su-exec && \
3050 echo "**** create user ****" && \
3151 addgroup -g 911 abc && \
3252 adduser -D -u 911 -G abc -h /home/abc -s /bin/sh abc
3353
34- # Install build dependencies and Python packages
35- COPY requirements.txt .
36- RUN \
37- echo "**** install build packages ****" && \
38- apk add --no-cache --virtual=build-dependencies \
39- git \
40- gcc \
41- musl-dev \
42- python3-dev \
43- libffi-dev \
44- openssl-dev \
45- cargo && \
46- echo "**** install icloud app ****" && \
47- pip install -U --no-cache-dir \
48- pip \
49- wheel && \
50- pip install -U --no-cache-dir -r requirements.txt && \
51- echo "**** cleanup ****" && \
52- apk del --purge \
53- build-dependencies && \
54- rm -rf \
55- /tmp/* \
56- /root/.cache \
57- /root/.cargo && \
58- rm requirements.txt
54+ # Copy Python packages from builder stage
55+ COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
56+ COPY --from=builder /usr/local/bin /usr/local/bin
5957
6058# add local files
6159COPY . /app/
6260WORKDIR /app
6361
64- # Create necessary directories
65- RUN mkdir -p /icloud /config/session_data
66-
6762# Create entrypoint script
6863COPY docker-entrypoint.sh /usr/local/bin/
6964RUN chmod +x /usr/local/bin/docker-entrypoint.sh
7065
7166EXPOSE 80
72- # ENTRYPOINT ["/usr/bin/dumb-init", "--"]
7367CMD ["/usr/local/bin/docker-entrypoint.sh" ]
0 commit comments