This repo provides:
-
Production-ready base images for Python FastAPI and PHP-FPM
-
A unified Makefile for local build/test/push workflows
-
GitHub Actions pipelines for develop vs main branch builds
-
A library of compose.yaml configs for quickly bootstrapping supporting services
Located in: images/docker-python-fastapi
- Based on Python 3.13-slim
- Includes:
- FastAPI + Uvicorn
- OpenAI, LangChain, Meilisearch, MinIO
- NLP libraries (
spacy
,tiktoken
,unstructured
) - File parsing libraries (
PyPDF2
,pdfplumber
,python-docx
,openpyxl
,pandas
, etc.) - Media processing (
ffmpeg
,moviepy
,pydub
,vosk
) - CLI tools:
mc
(MinIO client),jq
,yq
,curl
,wget
,nano
- Intended as a general-purpose base image for Python APIs and helper services.
Located in: images/docker-php-fpm
- Based on php:8.3-fpm
- Includes:
- Common PHP extensions (gd, intl, ldap, imap, zip, opcache, soap, xsl, etc.)
- PECL extensions (xdebug, redis, imagick, xmlrpc)
- Optimized for Craft CMS and other PHP web apps.
A single Makefile at the project root provides commands to build, run, and push either image.
IMAGE
→ target image (python-fastapi
orphp-fpm
)VERSION
→ tag version (dev
,1.0.0
, etc.)
Builds the image locally
make build IMAGE=python-fastapi VERSION=dev
Runs the container locally, exposing port 8000 for FastAPI (or PHP-FPM defaults).
make run IMAGE=python-fastapi VERSION=dev
Opens an interactive shell inside the container.
make shell IMAGE=php-fpm VERSION=dev
Pushes the built image to Docker Hub under both :1.0.0 and :latest.
make push IMAGE=python-fastapi VERSION=1.0.0
Runs a build and lists the resulting images.
make test-build IMAGE=python-fastapi
Commits and pushes to the develop branch, triggering a CI build (test only).
make push-develop IMAGE=python-fastapi
develop branch → performs a test build (does not push to Docker Hub).
main branch → performs a full build, tags images with latest and commit SHA, and pushes to Docker Hub.
Images are built for multiple platforms: linux/amd64 and linux/arm64.
The containers/
folder contains a curated set of
compose.yaml
files for quickly spinning up commonly used services.
Current services:
- meilisearch → Lightning-fast, open-source search engine with a developer-friendly API.
- miniflux → Minimalist, self-hosted RSS reader with APIs and integrations.
- minio → S3-compatible object storage, great for local or production use.
- n8n → Workflow automation platform, similar to Zapier, but self-hosted.
- plausible → Lightweight, privacy-friendly web analytics alternative to Google Analytics.
- wallabag → Self-hosted “read-it-later” app for saving and archiving articles.
Each folder contains a compose.yaml
file. To run any service:
docker compose -f containers/<service>/compose.yaml up -d
GitHub Actions workflows require the following secrets set at the repo level:
DOCKERHUB_USERNAME
→ your Docker Hub username (simplicateca)
DOCKERHUB_TOKEN
→ a Docker Hub access token with push permissions