Container Deployment
New container projects are no longer available. This page is for container projects created before they were retired. To build a web app, use AI Workspace; to host a site from your repository, see Static sites.
Deploy Docker applications with transparent billing based on resource usage.
Requirements
To deploy a container application, your repository must have a Dockerfile in the root directory.
# Example Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Port Configuration
When creating or updating a project, specify the port your container will use. Your application must listen on that port to receive traffic.
// Example Node.js — listening on the specified port
const port = 3000; // Match the port you set in your project
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
Scaling & Billing
Container deployments automatically scale based on traffic. You only pay for the resources your application actually uses when it's actively handling requests.
For current pricing and quota information, see the Pricing page or your dashboard quota summary.
Stateless Architecture
Container deployments run on a stateless architecture:
- No persistent storage: Data stored in the container is lost when it restarts or scales
- Request-driven CPU: Your application only consumes CPU while processing requests
- No guaranteed uptime: Containers can be restarted at any time for updates or resource optimization
For persistent data, use external services:
- Databases: PostgreSQL, MySQL, MongoDB (managed services)
- File storage: AWS S3, Google Cloud Storage
- Configuration: Environment variables or external config services
- Caching: External Redis, Memcached
Example with external database:
// Use connection pooling to external database
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL // External PostgreSQL
});
Environment Variables
Environment variables can be set through your project settings. They will be injected at runtime.
# .env.local (for local development)
DATABASE_URL=postgresql://localhost/mydb
API_KEY=secret123
# Set in your project settings on getlaunch.dev
Build Context
getlaunch.dev builds your Docker image from your repository root. Use a .dockerignore file to exclude unnecessary files from the build process.
.git
.gitignore
node_modules
.env.local
.DS_Store
README.md
Custom Domains
Each container application gets a default URL:
project-name-xxxx--app.gtlnch.app
You can configure custom domains in your project settings (available in Starter plan and above). Custom domains come with automatic SSL/TLS certificates and are served through our global CDN.
Limits & Quotas
Container quotas depend on your subscription tier and may change as plans evolve. Check Pricing or your dashboard quota summary for the current container, compute, request, and data-transfer limits.
Each deployment can have multiple instances that auto-scale as needed. Build timeout, HTTP request timeout, and image-size limits are enforced by the platform and shown contextually when a deployment exceeds them.
Troubleshooting
You can view deployment logs in your dashboard for debugging.
- Build failed: Check the build log for errors in your Dockerfile or build process.
- Application keeps restarting: Check the error logs and ensure your application handles
SIGTERMwith a graceful shutdown mechanism.

