Naposledy aktivní 11 months ago

這組 Dockerfile 和 docker-compose.yml 範本,幫你輕鬆將 Python 應用程式打包成 Docker 映像檔。它會自動處理相依套件安裝、Playwright 瀏覽器設定,並將程式碼即時同步到容器內,讓你在 Docker 環境下開發、部署都更順手。

timmy revidoval tento gist 11 months ago. Přejít na revizi

Žádné změny

timmy revidoval tento gist 11 months ago. Přejít na revizi

2 files changed, 45 insertions

docker-compose.yml(vytvořil soubor)

@@ -0,0 +1,36 @@
1 + # docker-compose.yml
2 +
3 + # 定義你的服務
4 + services:
5 + # 這是你的服務名稱,請改成你專案實際的服務名稱,例如 web-app 或 api-service
6 + your-service-name:
7 + # 告訴 Compose 在當前目錄尋找 Dockerfile 來建構映像檔
8 + build: .
9 + # 指定容器名稱,方便辨識和管理
10 + container_name: your-container-name
11 + # 容器停止或 Docker 服務重啟時,自動重啟此服務
12 + restart: always
13 +
14 + # 掛載卷宗 (volumes) - 將主機上的程式碼映射到容器內部
15 + # 這裡的 ./ 是指 docker-compose.yml 所在目錄 (通常是你的專案根目錄)
16 + # /app 是容器內的工作目錄 (Dockerfile 中設定的 WORKDIR)
17 + # 這樣主機上的程式碼變動會即時反映到容器內,方便開發和偵錯
18 + volumes:
19 + - ./:/app
20 +
21 + # 環境變數 - 載入 .env 檔案中的變數
22 + # docker-compose 預設會自動讀取與 docker-compose.yml 同目錄下的 .env 檔案
23 + env_file:
24 + - .env
25 +
26 + # 這裡不需要 command,因為 Dockerfile 裡面的 CMD 或 ENTRYPOINT 已經指定了啟動命令
27 + # 如果你的服務需要覆寫 Dockerfile 中的 CMD,可以在這裡定義 command:
28 + # command: ["python", "another_main_file.py"]
29 +
30 + # 如果你的服務需要公開埠號,可以在這裡設定 ports:
31 + # ports:
32 + # - "8000:8000" # 將主機的 8000 埠映射到容器的 8000 埠
33 +
34 + # 如果你的服務依賴其他服務(例如資料庫),可以在這裡設定 depends_on:
35 + # depends_on:
36 + # - your-database-service

requirements.txt(vytvořil soubor)

@@ -0,0 +1,9 @@
1 + loguru
2 + opencv-python
3 + numpy
4 + pendulum
5 + Pillow
6 + playwright
7 + pytesseract
8 + python-dotenv
9 + schedule

timmy revidoval tento gist 11 months ago. Přejít na revizi

1 file changed, 66 insertions

Dockerfile(vytvořil soubor)

@@ -0,0 +1,66 @@
1 + # Dockerfile
2 +
3 + # 使用 Python 官方的 slim-bookworm 映像作為基礎 (Python 3.12, Debian 12)
4 + # slim 版本比較輕量,適合部署
5 + FROM python:3.12-slim-bookworm
6 +
7 + # 安裝系統依賴套件。這些是常見用於網頁自動化 (Playwright) 和影像處理 (OpenCV) 的依賴。
8 + # 請根據你的專案需求,移除不需要的套件,以減少映像檔大小。
9 + # apt-get update 用來更新套件清單,apt-get install -y --no-install-recommends 安裝指定的套件
10 + # --no-install-recommends 會避免安裝非必要的建議套件
11 + RUN apt-get update && apt-get install -y --no-install-recommends \
12 + build-essential \
13 + libsecret-1-0 \
14 + libgtk-3-0 \
15 + libgdk-pixbuf2.0-0 \
16 + libxss1 \
17 + libasound2 \
18 + libdrm-dev \
19 + libgbm-dev \
20 + libnss3-dev \
21 + libatk-bridge2.0-0 \
22 + libcups2 \
23 + libxrandr2 \
24 + libxcomposite1 \
25 + libxcursor1 \
26 + libxdamage1 \
27 + libxext6 \
28 + libxfixes3 \
29 + libxi6 \
30 + libxrender1 \
31 + libxtst6 \
32 + curl \
33 + gnupg \
34 + ca-certificates \
35 + libgl1 \
36 + tesseract-ocr \
37 + tesseract-ocr-eng \
38 + && rm -rf /var/lib/apt/lists/* # 清理 apt 快取,讓映像檔更小
39 +
40 + # 設定應用程式在容器內的工作目錄
41 + WORKDIR /app
42 +
43 + # 複製你的 Python 依賴清單到工作目錄
44 + COPY requirements.txt ./
45 +
46 + # 安裝 Python 依賴套件
47 + # --no-cache-dir 會避免快取 pip 下載的套件,再次減少映像檔大小
48 + RUN pip install --no-cache-dir -r requirements.txt
49 +
50 + # 如果你的應用程式需要用到 Playwright,這裡會安裝其瀏覽器驅動。
51 + # 如果不需要,你可以把這行註解掉或移除。
52 + # 這會把瀏覽器安裝到 /root/.cache/ms-playwright
53 + RUN python -m playwright install chromium firefox webkit
54 +
55 + # 如果使用 Playwright,設定環境變數,讓 Playwright 知道瀏覽器在哪裡
56 + # 如果不需要 Playwright,這行也可以移除。
57 + ENV PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright
58 +
59 + # 複製你的應用程式碼到 Image 中
60 + # 通常會把整個專案複製進去
61 + # 請記得更新這裡的來源和目的地,例如 `COPY . .` 如果你的 Dockerfile 在專案根目錄
62 + # COPY . .
63 +
64 + # 定義容器啟動時執行的命令
65 + # 將 'your_main_app_file.py' 替換成你的主要執行檔名稱
66 + CMD ["python", "your_main_app_file.py"]
Novější Starší