Base Images Catalog¶
Complete list of available Airbase base images
This reference provides a comprehensive catalog of all base images available for use with Airbase, including their specifications, use cases, and version compatibility.
Overview¶
Airbase provides officially-managed base images that are:
- Security-hardened: Regular security patches and updates
- Government-compliant: Meet Singapore Government security standards
- Pre-configured: Optimized for Airbase infrastructure
- Officially supported: Maintained by GovTech
Recommended: Use these base images for a smoother deployment experience on Airbase.
Image Naming Convention¶
Examples: - gdssingapore/airbase:node-22 - Node.js 22 runtime - gdssingapore/airbase:node-22-builder - Node.js 22 with build tools - gdssingapore/airbase:python-3.13 - Python 3.13 runtime - gdssingapore/airbase:nginx-1.28 - Nginx 1.28 web server
Node.js Images¶
node-22 (Runtime)¶
Full name: gdssingapore/airbase:node-22
Description: Node.js 22 LTS runtime image for production deployments.
Use cases: - Production Node.js applications - Express.js servers - Next.js applications - API services
Included: - Node.js 22.x LTS - npm (latest) - Pre-configured app user (UID/GID 999) - Minimal runtime dependencies
Not included: - Build tools (gcc, g++, make) - Development dependencies - Git
Base OS: Debian Bookworm (slim)
Example usage:
FROM gdssingapore/airbase:node-22
WORKDIR /app
COPY --chown=app:app . .
USER app
CMD ["node", "server.js"]
Image size: ~200 MB
node-22-builder (Build Tools)¶
Full name: gdssingapore/airbase:node-22-builder
Description: Node.js 22 with build tools for compiling native dependencies.
Use cases: - Building Node.js applications - Installing native npm modules (e.g., bcrypt, sharp, canvas) - Compiling TypeScript - Bundling with Webpack/Vite/esbuild
Included: - Everything from node-22 - Build tools: gcc, g++, make, python3 - Git - Development headers
Example usage:
# Build stage
FROM gdssingapore/airbase:node-22-builder AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build
# Runtime stage
FROM gdssingapore/airbase:node-22
WORKDIR /app
COPY --from=builder --chown=app:app /app/dist ./dist
COPY --from=builder --chown=app:app /app/node_modules ./node_modules
USER app
CMD ["node", "dist/server.js"]
Image size: ~800 MB
Note: Use for building only. Copy artifacts to smaller node-22 runtime image.
node-20 (Runtime)¶
Full name: gdssingapore/airbase:node-20
Description: Node.js 20 LTS runtime image.
Use cases: - Applications requiring Node.js 20 specifically - Compatibility with older dependencies
Details: Same as node-22 but with Node.js 20.x
Recommendation: Use node-22 for new projects. Node.js 22 is the current LTS.
node-20-builder (Build Tools)¶
Full name: gdssingapore/airbase:node-20-builder
Description: Node.js 20 with build tools.
Details: Same as node-22-builder but with Node.js 20.x
node-24 (Runtime)¶
Full name: gdssingapore/airbase:node-24
Description: Node.js 24 runtime image (latest).
Use cases: - Testing latest Node.js features - Applications requiring Node.js 24+
Status: Available but not LTS yet. Use for testing only.
Recommendation: Use node-22 for production deployments.
Python Images¶
python-3.13 (Runtime)¶
Full name: gdssingapore/airbase:python-3.13
Description: Python 3.13 runtime image for production deployments.
Use cases: - Flask applications - FastAPI applications - Streamlit applications - Django applications - Python API services
Included: - Python 3.13.x - pip (latest) - Pre-configured app user (UID/GID 999) - Pre-configured to allow pip installs (no externally-managed-environment error)
Not included: - Build tools (gcc, g++, make) - Development headers - Git
Base OS: Debian Bookworm (slim)
Example usage:
FROM gdssingapore/airbase:python-3.13
ENV PYTHONUNBUFFERED=TRUE
WORKDIR /app
COPY --chown=app:app requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY --chown=app:app . .
USER app
CMD ["python", "app.py"]
Image size: ~180 MB (before dependencies)
Important: Always set ENV PYTHONUNBUFFERED=TRUE for proper logging in containers.
python-3.14 (Runtime)¶
Full name: gdssingapore/airbase:python-3.14
Description: Python 3.14 runtime image (latest).
Use cases: - Testing latest Python features - Applications requiring Python 3.14+
Status: Available but not stable yet. Use for testing only.
Recommendation: Use python-3.13 for production deployments.
Go Images¶
golang-1.25-builder¶
Full name: gdssingapore/airbase:golang-1.25-builder
Description: Go 1.25 builder image with compilation tools.
Use cases: - Building Go applications - REST API services - Microservices - CLI tools - High-performance backends
Included: - Go 1.25.x - Build tools (gcc, make) - Pre-configured app user (UID/GID 999) - Git
Base OS: Debian Bookworm
Example usage:
# Build stage
FROM gdssingapore/airbase:golang-1.25-builder AS build_go
WORKDIR /app
COPY go.* ./
RUN go mod download && go mod verify
COPY . .
RUN go build -o app
# Runtime stage (use minimal debian base)
FROM gdssingapore/airbase:debian-13
WORKDIR /app
COPY --from=build_go --chown=app:app /app/app ./
USER app
CMD ["./app"]
Notes: - Use multi-stage build with debian base image for smaller runtime image - Go produces static binaries, no Go runtime needed in final image - Recommended pattern: Build in golang-builder, run in debian base
golang-1.24-builder¶
Full name: gdssingapore/airbase:golang-1.24-builder
Description: Go 1.24 builder image.
Use cases: Same as golang-1.25-builder
Example:
FROM gdssingapore/airbase:golang-1.24-builder AS builder
# ... build steps ...
FROM gdssingapore/airbase:debian-13
# ... copy binary ...
golang-1.23-builder¶
Full name: gdssingapore/airbase:golang-1.23-builder
Description: Go 1.23 builder image.
Use cases: Same as golang-1.25-builder
Recommendation: Use golang-1.25-builder for new projects.
Nginx Images¶
nginx-1.28¶
Full name: gdssingapore/airbase:nginx-1.28
Description: Nginx 1.28 web server for serving static files.
Use cases: - Static websites - Single Page Applications (SPAs) - React/Vue/Angular builds - Figma Make exports - HTML/CSS/JS sites
Included: - Nginx 1.28.x - Pre-configured app user (UID/GID 999) - Default configuration for SPAs - Configured to run as non-root
Default document root: /usr/share/nginx/html
Example usage:
# Build stage (if needed)
FROM gdssingapore/airbase:node-22-builder AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build
# Runtime stage
FROM gdssingapore/airbase:nginx-1.28
COPY --from=builder --chown=app:app /app/dist /usr/share/nginx/html
USER app
# Nginx starts automatically
Image size: ~40 MB
Port: Nginx listens on port 8080 (not 80) to allow running as non-root.
Configuration: Custom nginx.conf can be added if needed:
Debian Base Images¶
debian-13¶
Full name: gdssingapore/airbase:debian-13
Description: Minimal Debian 13 (Trixie) base image for runtime.
Use cases: - Runtime base for compiled Go applications - Minimal container base - Custom application images - Lightweight runtime environments
Included: - Debian 13 (Trixie) minimal install - Pre-configured app user (UID/GID 999) - Essential system libraries - ca-certificates for HTTPS
NOT included: - Compilers or build tools - Language runtimes (Node, Python, etc.) - Application-specific dependencies
Example usage:
# Use with Go compiled binary
FROM gdssingapore/airbase:golang-1.25-builder AS builder
WORKDIR /app
COPY go.* ./
RUN go mod download
COPY . .
RUN go build -o app
# Minimal runtime
FROM gdssingapore/airbase:debian-13
WORKDIR /app
COPY --from=builder --chown=app:app /app/app ./
USER app
CMD ["./app"]
Image size: ~50 MB
debian-12¶
Full name: gdssingapore/airbase:debian-12
Description: Debian 12 (Bookworm) base image for runtime.
Use cases: Same as debian-13
Recommendation: Use debian-13 for new projects unless you need Debian 12 compatibility.
Version Compatibility Matrix¶
| Image | Language Version | Base OS | Supported Until |
|---|---|---|---|
node-22 | Node.js 22.x LTS | Debian Bookworm | April 2027 |
node-22-builder | Node.js 22.x LTS | Debian Bookworm | April 2027 |
node-20 | Node.js 20.x LTS | Debian Bookworm | April 2026 |
node-20-builder | Node.js 20.x LTS | Debian Bookworm | April 2026 |
node-24 | Node.js 24.x | Debian Bookworm | TBD |
python-3.13 | Python 3.13.x | Debian Bookworm | October 2029 |
python-3.14 | Python 3.14.x | Debian Bookworm | TBD |
golang-1.25-builder | Go 1.25.x | Debian Bookworm | TBD |
golang-1.24-builder | Go 1.24.x | Debian Bookworm | TBD |
golang-1.23-builder | Go 1.23.x | Debian Bookworm | TBD |
nginx-1.28 | Nginx 1.28.x | Debian Bookworm | Ongoing |
debian-13 | N/A | Debian Trixie | Ongoing |
debian-12 | N/A | Debian Bookworm | Ongoing |
Image Update Policy¶
Security Updates¶
Frequency: Weekly automated builds
Process: 1. Base OS packages updated 2. Security patches applied 3. Images rebuilt and pushed 4. Users notified of critical updates
Your action: Rebuild and redeploy applications to get latest security patches.
Version Updates¶
Major versions (e.g., Python 3.13 → 3.14): - New image tags created - Old versions maintained for 6 months - Deprecation notices sent - Migration guides provided
Minor/patch versions (e.g., Node 22.1 → 22.2): - Automatically updated in existing image tags - No action required from users - Rebuild to get latest version
Choosing the Right Image¶
Node.js Applications¶
| Scenario | Recommended Image |
|---|---|
| Express/Fastify API | node-22 |
| Next.js application | node-22-builder (build), node-22 (runtime) |
| Simple script | node-22 |
| Native dependencies | node-22-builder (build), node-22 (runtime) |
| TypeScript application | node-22-builder (build), node-22 (runtime) |
Python Applications¶
| Scenario | Recommended Image |
|---|---|
| Flask API | python-3.13 |
| FastAPI application | python-3.13 |
| Streamlit app | python-3.13 |
| Django application | python-3.13 |
| Data science app | python-3.13 |
Go Applications¶
| Scenario | Recommended Image |
|---|---|
| REST API | golang-1.25-builder (build), debian-13 (runtime) |
| Microservice | golang-1.25-builder (build), debian-13 (runtime) |
| CLI tool | golang-1.25-builder (build), debian-13 (runtime) |
| gRPC service | golang-1.25-builder (build), debian-13 (runtime) |
| Background worker | golang-1.25-builder (build), debian-13 (runtime) |
Static Sites¶
| Scenario | Recommended Image |
|---|---|
| React/Vue/Angular SPA | node-22-builder (build), nginx-1.28 (serve) |
| Plain HTML/CSS/JS | nginx-1.28 |
| Figma Make export | nginx-1.28 |
| Jekyll/Hugo static site | nginx-1.28 |
Common Image Patterns¶
Pattern 1: Node.js with Multi-Stage Build¶
FROM gdssingapore/airbase:node-22-builder AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build
FROM gdssingapore/airbase:node-22
WORKDIR /app
COPY --from=builder --chown=app:app /app/dist ./dist
COPY --from=builder --chown=app:app /app/node_modules ./node_modules
USER app
CMD ["node", "dist/server.js"]
Pattern 2: Python Single-Stage¶
FROM gdssingapore/airbase:python-3.13
ENV PYTHONUNBUFFERED=TRUE
WORKDIR /app
COPY --chown=app:app requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY --chown=app:app . .
USER app
CMD ["python", "app.py"]
Pattern 3: Static Site with Build¶
FROM gdssingapore/airbase:node-22-builder AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build
FROM gdssingapore/airbase:nginx-1.28
COPY --from=builder --chown=app:app /app/dist /usr/share/nginx/html
USER app
Image Features¶
Pre-configured app User¶
All images include a pre-configured app user:
No need to create this user in your Dockerfile.
Python: Pre-configured pip¶
Python images are configured to allow pip installs without virtual environments:
No externally-managed-environment error.
Nginx: Non-root Configuration¶
Nginx images are configured to run as non-root:
- Listens on port 8080 (not 80)
- PID file in
/tmp - Logs to stdout/stderr
- Cache in
/tmp
Airbase automatically maps port 8080 to HTTPS (443) externally.
Verifying Image Details¶
Check Image Locally¶
# Pull image
docker pull gdssingapore/airbase:node-22
# Check Node version
docker run --rm gdssingapore/airbase:node-22 node --version
# Check user
docker run --rm gdssingapore/airbase:node-22 whoami
# Check installed packages
docker run --rm gdssingapore/airbase:node-22 dpkg -l
Check Python Version¶
Check Nginx Version¶
Image Registry¶
Registry: Docker Hub
Organization: gdssingapore
Repository: airbase
Pull command:
Note: Images are public and can be pulled without authentication.
Troubleshooting¶
Issue: Image Not Found¶
Error:
Cause: Image tag doesn't exist.
Solution: Check available tags in this catalog. Use node-22 or node-24, not node-23.
Issue: Platform Mismatch¶
Error:
Cause: Running on ARM (e.g., M1/M2 Mac) but image is AMD64.
Solution: Airbase runs on AMD64. Build with platform flag:
Or in Dockerfile:
Issue: Old Image Version¶
Problem: Want to ensure latest security patches.
Solution: Pull latest image:
Deprecated Images¶
Images Removed¶
| Image | Deprecated | Removed | Migration Path |
|---|---|---|---|
node-18 | Jan 2024 | July 2024 | Upgrade to node-20 or node-22 |
Images Being Deprecated¶
| Image | Deprecation Notice | Removal Date | Migration Path |
|---|---|---|---|
node-20 | April 2026 | October 2026 | Upgrade to node-22 |
Migration process:
- Test application with new image locally
- Update Dockerfile to use new image tag
- Build and deploy to staging
- Verify functionality
- Deploy to production
Future Images¶
Planned¶
- Go images: Go 1.22, Go 1.23
- Rust images: Rust stable
- Java images: OpenJDK 21
Request New Images¶
To request support for additional languages or versions:
- Contact GovTech Airbase team
- Provide use case and justification
- Specify version requirements
See Also¶
- Reference: Dockerfile Requirements - How to use base images
- How-To: Build and Deploy Applications - Build workflow
- Tutorial: Getting Started - First deployment
- Examples: Node.js Example - Node.js usage example
- Examples: Python Example - Python usage example