Skip to content

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

gdssingapore/airbase:<language>-<version>[-variant]

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:

COPY --chown=app:app nginx.conf /etc/nginx/conf.d/default.conf

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.

airbase container build
airbase container deploy --yes

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:

User: app
UID: 999
GID: 999
Home: /home/app
Shell: /bin/bash

No need to create this user in your Dockerfile.

Python: Pre-configured pip

Python images are configured to allow pip installs without virtual environments:

# This works without errors in Airbase Python images
RUN pip install -r requirements.txt

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

docker run --rm gdssingapore/airbase:python-3.13 python --version

Check Nginx Version

docker run --rm gdssingapore/airbase:nginx-1.28 nginx -v

Image Registry

Registry: Docker Hub

Organization: gdssingapore

Repository: airbase

Pull command:

docker pull gdssingapore/airbase:<tag>

Note: Images are public and can be pulled without authentication.


Troubleshooting

Issue: Image Not Found

Error:

Error: manifest for gdssingapore/airbase:node-23 not found

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:

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform

Cause: Running on ARM (e.g., M1/M2 Mac) but image is AMD64.

Solution: Airbase runs on AMD64. Build with platform flag:

airbase container build --platform linux/amd64

Or in Dockerfile:

FROM --platform=linux/amd64 gdssingapore/airbase:node-22

Issue: Old Image Version

Problem: Want to ensure latest security patches.

Solution: Pull latest image:

docker pull gdssingapore/airbase:node-22
airbase container build
airbase container deploy --yes

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:

  1. Test application with new image locally
  2. Update Dockerfile to use new image tag
  3. Build and deploy to staging
  4. Verify functionality
  5. 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:

  1. Contact GovTech Airbase team
  2. Provide use case and justification
  3. Specify version requirements

See Also