timmy revised this gist 5 months ago. Go to revision
No changes
timmy revised this gist 5 months ago. Go to revision
2 files changed, 45 insertions
docker-compose.yml(file created)
| @@ -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(file created)
| @@ -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 revised this gist 5 months ago. Go to revision
1 file changed, 66 insertions
Dockerfile(file created)
| @@ -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"] | |