Overview
Icones is a simple web application that requires:- Cloning from a Git repository
- Building with Node.js and pnpm
- Serving static files with nginx
Project Structure
Simple applications typically only need these two files. No build scripts are required when all steps can be handled directly in the Dockerfile.
Configuration Files
Understanding the Configuration
meta.json Breakdown
- Basic Metadata
- Version Configuration
name: Unique identifier (used in image tags)type: Must be “app” for applicationstitle: Human-readable display nameslogan: Short marketing descriptiondescription: Detailed description of the applicationlicense: Software license type
Dockerfile Breakdown
The Dockerfile uses a multi-stage build pattern with three stages:Stage 1: Source
- Uses lightweight Alpine Linux with Git
- Clones the repository and checks out the specific commit
VERSIONargument comes frommeta.jsonduring build
Stage 2: Build
- Copies source code from the first stage
- Enables corepack to use pnpm (Node.js package manager)
- Installs dependencies and builds the application
- Output is placed in
/app/distby default
Stage 3: Runtime
- Uses a custom nginx base image configured for Vue applications
- Copies only the built files (not source or node_modules)
- Sets environment variables for timezone and production mode
- Exposes port 80 for HTTP traffic
The final image is much smaller because it only contains the built static files and nginx, not the source code or build dependencies.
Building and Running
The Apps Image system will automatically:- Read the
meta.jsonconfiguration - Pass the
versionandshaas build arguments to Docker - Build the image with appropriate tags
- Push to the container registry
Key Takeaways
- Simple is better: Only two files needed for basic applications
- Multi-stage builds: Keep images small by separating build and runtime
- Version control: Use git SHAs for reproducible builds
- Automatic builds: The system handles building and tagging automatically
Next Steps
Multi-Variant Setup
Learn how to create multiple variants of the same application
Build Scripts
Add pre-build and post-build automation with shell scripts