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