Deploy Deno TypeScript Apps on OCI Container Instances
Oracle Cloud Infrastructure (OCI) has streamlined deployment of TypeScript applications built with Deno, combining modern cloud-native tooling with managed compute. A new tutorial walks through deploying stateless Deno applications to OCI Container Instances integrated with Oracle NoSQL Database Cloud Service. The approach eliminates infrastructure friction, letting developers focus on application logic.

Why This Stack Matters

Deno addresses TypeScript development pain points: type safety without configuration overhead, secure module management, and built-in tooling. Paired with OCI Container Instances (managed compute, no VM overhead) and NoSQL persistence, it creates a powerful stack for digital-native companies building scalable applications rapidly.

The Deployment Workflow

Phase Task Tool
Setup Install Deno, clone sample repo Cloud Shell, curl
Database Create NoSQL table “dinosaurs” Deno script (load-db)
Infrastructure Provision networking, compute, DNS Terraform
Deploy Launch container, expose via IP/DNS OCI Container Instances

Getting Started: Step by Step

1. Install Deno

curl -fsSL https://deno.land/install.sh | sh

2. Clone the sample repository

git clone https://github.com/gpoul/tf-deno-container-instance.git
cd tf-deno-container-instance/

3. Set the NoSQL compartment ID

export NOSQL_COMPARTMENT_OCID=ocid1.compartment.oc1..aaaaaaaax7dexampleexampleexampleexampleexampleexample

4. Load the sample database

cd fresh-dinosaurs/
deno install     # Install dependencies
deno run load-db # Create and populate NoSQL table
cd ..

5. Configure Terraform variables (create terraform.tfvars):

tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaaxmplsampletenancyocidnotreal1234567890abcdefg"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaax7dexampleexampleexampleexampleexampleexample"
region = "eu-frankfurt-1"
availability_domain_index = 0
container_instance_name = "deno-fresh-dinosaurs"
container_image_url = "ghcr.io/gpoul/fresh-dinosaurs:latest"
nosql_compartment_ocid = "ocid1.compartment.oc1..aaaaaaaax7dexampleexampleexampleexampleexampleexample"

6. Deploy infrastructure

terraform init
terraform plan
terraform apply

Terraform outputs a dinosaursUrl for testing. Access it to verify the application loads data from NoSQL.

Key Considerations

Stateless design: The container instance is ephemeral. All state lives in NoSQL, allowing seamless horizontal scaling.

Automated infrastructure: Terraform handles networking, compute provisioning, and optional DNS configuration, reducing manual setup from hours to minutes.

Cost awareness: OCI resources incur charges. Clean up with terraform destroy, but manually delete the NoSQL table since Terraform doesn’t manage it.

Image flexibility: The sample uses a public image, but you can push your own to a container registry and reference it.

When to Use This Approach

This stack excels for teams building stateless web services, APIs, or microservices that need fast iteration and auto-scaling. Deno’s type safety reduces runtime errors, while OCI’s managed services eliminate operational overhead.

The tutorial provides a complete, production-ready template for cloud-native TypeScript development. Whether you’re starting a new project or migrating existing services, this deployment path minimizes infrastructure complexity without sacrificing capability.

Ready to deploy? Start with the sample repository and adapt it to your application logic.

Follow us on Bluesky , LinkedIn , and X to Get Instant Updates