> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crane-it.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Nextjs

Used by some of the world's largest companies, Next.js enables you to create full-stack web applications by extending the latest React features, and integrating powerful Rust-based JavaScript tooling for the fastest builds.

This template shows how you can deploy any nextjs project to AWS. The image we use simply contains the nextjs demo app.

## Docker compose

Here is the docker compose file generated by Crane It.

```yml theme={null}
version: "3.8"
services:
  next-demo: &next-demo
    container_name: next-demo
    image: craneit/next-demo:latest
    expose:
      - "3000"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.next-demo.rule=Host(`$CRANE_IT_EB_DOMAIN`)"
      - "traefik.http.routers.next-demo.entrypoints=websecure"
      - "traefik.http.routers.next-demo.tls.certresolver=myresolver"
      - "traefik.http.services.next-demo.loadbalancer.server.port=3000"
    ports: []

  traefik:
    image: "traefik:v2.9.5"
    container_name: traefik
    command:
      - "--log.level=INFO"
      - "--api.insecure=false"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
      - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.myresolver.acme.email=craneit.contact@gmail.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
```

The docker compose file is quite simple if you ignore traefic and its related labels. Traefic allow us to use HTTPS.
