feat: update Dockerfile and requirements for ML dependencies; add base image build workflow
Some checks failed
Build Backend Application and Docker Image / build-docker (push) Failing after 31s
Build Backend Application and Docker Image / deploy-stack (push) Has been skipped

This commit is contained in:
Siwat Sirichai 2025-08-10 19:49:24 +07:00
parent 57a51f3ba3
commit 252ef468c9
5 changed files with 64 additions and 20 deletions

View file

@ -0,0 +1,37 @@
name: Build Worker Base Image
on:
workflow_dispatch:
push:
paths:
- 'Dockerfile.base'
- 'requirements.base.txt'
branches:
- main
jobs:
build-base:
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: git.siwatsystem.com
username: ${{ github.actor }}
password: ${{ secrets.RUNNER_TOKEN }}
- name: Build and push base Docker image
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile.base
push: true
tags: git.siwatsystem.com/adsist-cms/worker-base:latest

View file

@ -1,19 +1,11 @@
# Use the official Python image from the Docker Hub
FROM python:3.13-bookworm
# Use our pre-built base image with ML dependencies
FROM git.siwatsystem.com/adsist-cms/worker-base:latest
# Set the working directory in the container
WORKDIR /app
# Copy the requirements file into the container at /app
# Copy and install application requirements (frequently changing dependencies)
COPY requirements.txt .
# Update apt, install libgl1, and clear apt cache
RUN apt update && apt install -y libgl1 && rm -rf /var/lib/apt/lists/*
# Install any dependencies specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code into the container at /app
# Copy the application code
COPY . .
# Run the application

15
Dockerfile.base Normal file
View file

@ -0,0 +1,15 @@
# Base image with all ML dependencies
FROM python:3.13-bookworm
# Install system dependencies
RUN apt update && apt install -y libgl1 && rm -rf /var/lib/apt/lists/*
# Copy and install base requirements (ML dependencies that rarely change)
COPY requirements.base.txt .
RUN pip install --no-cache-dir -r requirements.base.txt
# Set working directory
WORKDIR /app
# This base image will be reused for all worker builds
CMD ["python3", "-m", "fastapi", "run", "--host", "0.0.0.0", "--port", "8000"]

7
requirements.base.txt Normal file
View file

@ -0,0 +1,7 @@
torch
torchvision
ultralytics
opencv-python
scipy
filterpy
psycopg2-binary

View file

@ -1,13 +1,6 @@
fastapi
uvicorn
torch
torchvision
ultralytics
opencv-python
websockets
fastapi[standard]
redis
urllib3<2.0.0
psycopg2-binary
scipy
filterpy