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.
Python¶
| Build Image | Base OS | Included Tools | Use Case |
|---|---|---|---|
python-3.14 |
Debian Bullseye | Python 3.14, pip, setuptools, gunicorn | Bleeding-edge Python |
python-3.13 |
Debian Bullseye | Python 3.13, pip, setuptools, gunicorn | Latest stable Python |
python-3.12 |
Debian Bullseye | Python 3.12, pip, setuptools, gunicorn | Stable Python applications |
python-3.11 |
Debian Bullseye | Python 3.11, pip, setuptools, gunicorn | Python 3.11 compatibility |
python-3.10 |
Debian Bullseye | Python 3.10, pip, setuptools, gunicorn | Python 3.10 compatibility |
python-3.9 |
Debian Bullseye | Python 3.9, pip, setuptools, gunicorn | Legacy |
python-3.8 |
Debian Bullseye | Python 3.8, pip, setuptools, gunicorn | Legacy |
python-3.7 |
Debian Bullseye | Python 3.7, pip, setuptools, gunicorn | Legacy |
python-3.6 |
Debian Bullseye | Python 3.6, pip, setuptools, gunicorn | Legacy |
python-3.5 |
Debian Bullseye | Python 3.5, pip, setuptools, gunicorn | Legacy |
Common use cases: Django, Flask, FastAPI, Celery workers, data processing scripts.
All Python images include:
- pip and setuptools (latest)
- gunicorn pre-installed
- System libraries for common native extensions (libssl-dev, libfreetype6-dev)
- Automatic collectstatic for Django projects (disable with DISABLE_COLLECTSTATIC=1)
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.14-uv |
Debian Bullseye | Python 3.14, uv, gunicorn | Bleeding-edge Python with uv |
python-3.13-uv |
Debian Bullseye | Python 3.13, uv, gunicorn | Latest stable Python with uv |
python-3.12-uv |
Debian Bullseye | Python 3.12, uv, gunicorn | Python 3.12 with uv |
python-3.11-uv |
Debian Bullseye | 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.14-node-25.6 |
Debian Bullseye | Python 3.14, Node.js 25.6, npm | Python + JS frontend build |
python-3.13-node-20.18 |
Debian Bullseye | Python 3.13, Node.js 20.18, npm, yarn | Python + JS frontend build |
python-3.12-node-20.10 |
Debian Bullseye | Python 3.12, Node.js 20.10, npm, yarn | Python + JS frontend build |
python-3.11-node-20.10 |
Debian Bullseye | Python 3.11, Node.js 20.10, npm, yarn | Python + JS frontend build |
python-3.10-node-20.10 |
Debian Bullseye | Python 3.10, Node.js 20.10, npm, yarn | Python + JS frontend build |
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.14-uv-node-25.6 |
Debian Bullseye | Python 3.14, uv, Node.js 25.6, npm | Python (uv) + JS frontend |
python-3.13-uv-node-25.6 |
Debian Bullseye | Python 3.13, uv, Node.js 25.6, npm | Python (uv) + JS frontend (default) |
python-3.12-uv-node-25.6 |
Debian Bullseye | Python 3.12, uv, Node.js 25.6, npm | Python (uv) + JS frontend |
python-3.11-uv-node-25.6 |
Debian Bullseye | Python 3.11, uv, Node.js 25.6, npm | Python (uv) + JS frontend |
Note
python-3.13-uv-node-25.6 is the default build pack for new Python applications.
Node.js¶
| Build Image | Base OS | Included Tools | Use Case |
|---|---|---|---|
node-20-npm |
Alpine Linux | Node.js 20, npm, Python 3 (for native modules) | Node.js with npm |
node-20-yarn |
Alpine Linux | Node.js 20, yarn | Node.js with yarn |
node-14 |
-- | Node.js 14 | Legacy |
node-12 |
-- | Node.js 12 | Legacy |
node-10 |
-- | Node.js 10 | Legacy |
Common use cases: Express.js, Next.js, Nest.js, API servers, static site generators.
Warning
node-10, node-12, and node-14 are provided for legacy compatibility only. These versions have reached end-of-life. Use node-20-npm or node-20-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 |
ruby-3.1 |
Debian Slim | Ruby 3.1, Bundler | Ruby 3.1 compatibility |
ruby-2.7 |
Debian Slim | Ruby 2.7, Bundler | Legacy |
ruby-2.6 |
Debian Slim | Ruby 2.6, Bundler | Legacy |
ruby-2.5 |
Debian Slim | Ruby 2.5, Bundler | Legacy |
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
PHP¶
| Build Image | Base OS | Included Tools | Use Case |
|---|---|---|---|
php-7.4-laravel-fpm |
-- | PHP 7.4, Composer, PHP-FPM, Nginx | Laravel applications |
php-7 |
-- | PHP 7, Composer | General PHP applications |
Common use cases: Laravel, WordPress, custom PHP applications.
Alternative Runtimes¶
| Build Image | Base OS | Included Tools | Use Case |
|---|---|---|---|
pypy2 |
-- | PyPy 2 | Legacy Python 2 with JIT |
pypy3 |
-- | PyPy 3 | Python 3 with JIT compilation |
Common use cases: CPU-intensive Python applications that benefit from JIT compilation.
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 - 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.
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
- Optimizing for size? -- Node.js Alpine images are smaller; Ruby Rails uses multi-stage builds
- Special requirements? -- use a custom Dockerfile for full control