Skip to content

Build Images

Build images are pre-configured Docker environments used to build and run your application. Select a build image in Application > Build Settings or specify one in your appliku.yml file.

For the full Dockerfile contents of each image, see Predefined Dockerfiles.

Note

python-3.14-uv-node-26 is the default build image for new applications.

Python

Build Image Base OS Included Tools Use Case
python-3.15 Debian Trixie Python 3.15, pip, setuptools, gunicorn Newest Python
python-3.14 Debian Trixie Python 3.14, pip, setuptools, gunicorn Latest stable Python
python-3.13 Debian Trixie Python 3.13, pip, setuptools, gunicorn Stable Python applications
python-3.12 Debian Trixie Python 3.12, pip, setuptools, gunicorn Stable Python applications
python-3.11 Debian Trixie Python 3.11, pip, gunicorn Python 3.11 compatibility
python-3.10 Debian Trixie Python 3.10, pip, gunicorn Legacy
python-3.9 Debian Trixie Python 3.9, pip, gunicorn Legacy
python-3.8 Debian Bookworm Python 3.8, pip Legacy
python-3.7 Debian Bookworm Python 3.7, pip Legacy

Common use cases: Django, Flask, FastAPI, Celery workers, data processing scripts.

All Python images include: - the latest pip - gunicorn pre-installed (Python 3.9 and newer) - System libraries for common native extensions (libssl-dev, libfreetype6-dev) - Automatic collectstatic for Django projects (disable with DISABLE_COLLECTSTATIC=1)

Warning

Python 3.7, 3.8, 3.9 and 3.10 have reached end-of-life and get no security fixes. Use Python 3.12 or newer for new projects.

Python + uv

These images use uv as the package manager instead of pip. uv is significantly faster for dependency resolution and installation.

Build Image Base OS Included Tools Use Case
python-3.15-uv Debian Trixie Python 3.15, uv, gunicorn Newest Python with uv
python-3.14-uv Debian Trixie Python 3.14, uv, gunicorn Latest stable Python with uv
python-3.13-uv Debian Trixie Python 3.13, uv, gunicorn Python 3.13 with uv
python-3.12-uv Debian Trixie Python 3.12, uv, gunicorn Python 3.12 with uv
python-3.11-uv Debian Trixie Python 3.11, uv, gunicorn Python 3.11 with uv

Tip

These images automatically detect your dependency format at build time — no extra configuration needed: - pyproject.toml + uv.lock (preferred): installed with uv sync --frozen - requirements.txt (fallback): installed with uv pip install --system

Python + Node.js

Build Image Base OS Included Tools Use Case
python-3.15-node-26 Debian Trixie Python 3.15, Node.js 26.12, npm, yarn 1.22 Python + JS frontend build
python-3.14-node-26 Debian Trixie Python 3.14, Node.js 26.12, npm, yarn 1.22 Python + JS frontend build
python-3.13-node-26 Debian Trixie Python 3.13, Node.js 26.12, npm, yarn 1.22 Python + JS frontend build
python-3.12-node-26 Debian Trixie Python 3.12, Node.js 26.12, npm, yarn 1.22 Python + JS frontend build
python-3.11-node-26 Debian Trixie Python 3.11, Node.js 26.12, npm, yarn 1.22 Python + JS frontend build
python-3.14-node-25.6 Debian Trixie Python 3.14, Node.js 25.6, npm, yarn Deprecated, use python-3.14-node-26
python-3.13-node-20.18 Debian Trixie Python 3.13, Node.js 20.10, npm, yarn Deprecated, use python-3.13-node-26
python-3.12-node-20.10 Debian Trixie Python 3.12, Node.js 20.10, npm, yarn Deprecated, use python-3.12-node-26
python-3.11-node-20.10 Debian Trixie Python 3.11, Node.js 20.10, npm, yarn Deprecated, use python-3.11-node-26
python-3.10-node-20.10 Debian Trixie Python 3.10, Node.js 20.10, npm, yarn Deprecated

Common use cases: Django + React/Vue/Svelte frontends, Python backends with JavaScript build steps (Webpack, Vite, Tailwind CSS).

Tip

Use a Python + Node.js image when your Django or Flask project needs to compile frontend assets during the build phase. Set a build_command like npm run build to compile your assets.

Python + uv + Node.js

These images combine uv for Python package management with Node.js for frontend builds. Like the Python + uv images, they automatically detect whether to use pyproject.toml + uv.lock or requirements.txt — no configuration needed.

Build Image Base OS Included Tools Use Case
python-3.15-uv-node-26 Debian Trixie Python 3.15, uv, Node.js 26.12, npm, yarn 1.22 Python (uv) + JS frontend
python-3.14-uv-node-26 Debian Trixie Python 3.14, uv, Node.js 26.12, npm, yarn 1.22 Python (uv) + JS frontend (default)
python-3.13-uv-node-26 Debian Trixie Python 3.13, uv, Node.js 26.12, npm, yarn 1.22 Python (uv) + JS frontend
python-3.12-uv-node-26 Debian Trixie Python 3.12, uv, Node.js 26.12, npm, yarn 1.22 Python (uv) + JS frontend
python-3.14-uv-node-25.6 Debian Trixie Python 3.14, uv, Node.js 25.6, npm, yarn Deprecated, use python-3.14-uv-node-26
python-3.13-uv-node-25.6 Debian Trixie Python 3.13, uv, Node.js 25.6, npm, yarn Deprecated, use python-3.13-uv-node-26
python-3.12-uv-node-25.6 Debian Trixie Python 3.12, uv, Node.js 25.6, npm, yarn Deprecated, use python-3.12-uv-node-26
python-3.11-uv-node-25.6 Debian Trixie Python 3.11, uv, Node.js 25.6, npm, yarn Deprecated, use python-3.12-uv-node-26

Warning

Node.js 20 and Node.js 25 have reached end-of-life and get no security fixes. The deprecated images above stay available for existing applications. Move to a Node 26 image.

Node.js

Build Image Base OS Included Tools Use Case
node-26-npm Alpine Linux Node.js 26.12, npm, Python 3 (for native modules) Node.js with npm
node-26-yarn Alpine Linux Node.js 26.12, yarn through Corepack Node.js with yarn
node-24-npm Alpine Linux Node.js 24.22, npm, Python 3 (for native modules) Node.js 24 LTS with npm
node-22-npm Alpine Linux Node.js 22.23, npm, Python 3 (for native modules) Node.js 22 LTS with npm
node-25-npm Alpine Linux Node.js 25, npm Deprecated, use node-26-npm
node-20-npm Alpine Linux Node.js 20, npm Deprecated, use node-26-npm
node-20-yarn Alpine Linux Node.js 20, yarn Deprecated, use node-26-yarn
node-14 Debian Node.js 14 Deprecated, use node-26-npm

Common use cases: Express.js, Next.js, Nest.js, API servers, static site generators.

Tip

node-26-yarn runs yarn through Corepack. If your package.json has a packageManager field (for example "packageManager": "yarn@4.5.0"), the build uses that yarn version. Without the field, the build uses yarn 1.x (classic).

Warning

Node.js 14, 20 and 25 have reached end-of-life and get no security fixes. Use node-26-npm or node-26-yarn for new projects.

Ruby

Build Image Base OS Included Tools Use Case
ruby-3.4.1 Debian Slim Ruby 3.4.1, Bundler, build-essential, git Latest Ruby
ruby-3.3-rails Debian Slim Ruby 3.3, Bundler, Bootsnap, multi-stage build Rails applications

Common use cases: Ruby on Rails, Sinatra, Sidekiq workers.

The ruby-3.3-rails image uses a multi-stage Dockerfile optimized for Rails: - Separate build and runtime stages for smaller final images - Bootsnap precompilation for faster boot times - Asset precompilation built-in - PostgreSQL client libraries included

Static Sites

Build Image Use Case
Any Node.js image Static site generators that require a build step (React, Vue, Next.js static export, Docusaurus, etc.)
no-build-static Static files already in the repository — no build step required

For static sites, set is_static_site: true in your appliku.yml or enable the Static Site toggle in build settings.

Note

The no-build-static build image is only available for applications marked as static sites. It has no build command — Appliku copies your repository files directly and serves them via Nginx.

Custom Dockerfile

Build Image Description
dockerfile Use a Dockerfile from your repository
custom Enter a custom Dockerfile directly in the dashboard

Use a custom Dockerfile when: - Your application requires a language or runtime not covered by the predefined images (for example PHP or PyPy) - You need specific system packages or tools - You want full control over the build environment - You need a multi-stage build for optimization

For guidance on writing custom Dockerfiles for Appliku, see Deploy from a Dockerfile.

Removed Build Images

These build images were removed in October 2026: python-3.6, python-3.5, pypy2, pypy3, node-12, node-10, ruby-3.1, ruby-2.7, ruby-2.6, ruby-2.5, php-7.4-laravel-fpm, php-7.

An appliku.yml file that names a removed image fails validation. Select a current image, or use a custom Dockerfile.

Choosing the Right Build Image

  1. Match your primary language -- pick the image for your main runtime
  2. Need frontend builds? -- use a Python + Node.js combo image if your backend is Python
  3. Use supported versions -- deprecated images get no Node.js security fixes
  4. Optimizing for size? -- Node.js Alpine images are smaller; Ruby Rails uses multi-stage builds
  5. Special requirements? -- use a custom Dockerfile for full control