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:
pipandsetuptools(latest)gunicornpre-installed- System libraries for common native extensions (
libssl-dev,libfreetype6-dev) - Automatic
collectstaticfor Django projects (disable withDISABLE_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 |
If your project uses uv for dependency management, choose a Python + uv image for faster builds.
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).
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.
| 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 |
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 |
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.
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 | Build static sites (React, Vue, Next.js static export) |
For static sites, set is_static_site: true and output_directory in your appliku.yml to point to the directory containing your built HTML/CSS/JS files.
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