---
title: Containers limitations
description: Learn about the limitations of Scaleway Serverless Containers.
tags: containers limitations serverless
dates:
  validation: 2025-09-17
  posted: 2021-10-12
---

This section contains usage limits that apply when using Serverless Containers.

| Resources                                         | Criteria       | Limits            | Scope                       |
|---------------------------------------------------|-------------   |------------------ |-----------------------------|
| Namespaces                                        | Max number     | 100*              | Project                     |
| Containers                                        | Max number     | 1000*             | Organization                |
| Total container memory\**                         | Max size       | 600 GiB           | Organization                |
| Custom domains                                    | Max number     | 50                | Container                   |
| Recommended maximum uncompressed image size       | Max size       | 1 GB              | Container                   |
| Temporary disk size                               | Max size       | 24 000 MiB        | Container                   |
| Invocation rate                                   | Max number     | 5000 per second   | Container                   |
| Concurrency                                       | Max            | 80                | Container Instance          |
| Max Scale (simultaneous Container instances)      | Max            | 200               | Container                   |
| CPU                                               | Min/max        | 70 to 6000 mvCPU  | Container                   |
| Memory                                            | Min/Max        | 128 to 12228 MB   | Container                   |
| Environment variables                             | Max number     | 200               | Container + namespace       |
| Environment variables                             | Max size       | 65536 chars       | Environment variable        |
| Secret environment variables                      | Max number     | 200               | Container + namespace       |
| Secret environment variables                      | Max size       | 65536 bytes       | Secret environment variable |
| Time before scale to zero                         | Time           | 15 minutes        | Instance                    |
| Time before scale down                            | Time           | 30 seconds        | Instance                    |
| HTTP request duration (timeout)\***               | Min/max        | 10 seconds to 60 minutes | Request              |
| Private Networks attached                         | Max            | 1                 | Container                   |
| Logs                                              | Logs           | 30000 per minute  | Project                     |

\* Lower limits may apply before account verification. Contact our Support team if you have any questions.

\** Total container memory is the sum of the memory allocated to all your containers at their maximum Scale.

\*** Use [Serverless Jobs](/serverless-jobs/) for tasks up to 24h.

These limits are enforced as [Organization quotas](/organizations-and-projects/organization/organization-quotas/#serverless-containers).

During the execution of the container, if the limits are exceeded, a restart occurs.

## Image size

We recommend keeping your image size **below 1 GB** to ensure faster deployment and better cold start performance.

### Tips for keeping image size down

* Use lightweight distribution like *Alpine*
* Minimize layers and unnecessary dependencies
* Clean up temp files and cache (e.g., `rm -rf /var/lib/apt/lists/*` in Debian-based images)
* Use multi-stage builds to keep only runtime essentials. Examples:

<Tabs>
    <TabsTab label="Node.js">
    ```dockerfile
    # Build stage
    FROM node:22-alpine AS builder

    WORKDIR /app

    # Copy package files
    COPY package*.json ./

    # Install dependencies
    RUN npm ci --only=production

    # Copy source code
    COPY . .

    # Runtime stage
    FROM node:22-alpine

    WORKDIR /app

    # Copy built artifacts from builder
    COPY --from=builder /app/node_modules ./node_modules
    COPY --from=builder /app .

    # Expose the port the app listens on
    ENV PORT=8080

    # Start the application
    CMD ["node", "index.js"]
    ```
    </TabsTab>
    <TabsTab label="Go">
    ```dockerfile
    # Build stage
    FROM golang:1.23-alpine AS builder

    WORKDIR /app

    # Copy Go module files
    COPY go.mod go.sum ./

    # Download dependencies
    RUN go mod download

    # Copy source code
    COPY . .

    # Build the binary
    RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .

    # Runtime stage
    FROM scratch

    WORKDIR /app

    # Copy the binary from builder
    COPY --from=builder /app/main .

    # Expose the port the app listens on
    ENV PORT=8080

    # Run the binary
    CMD ["./main"]
    ```
    </TabsTab>

    <TabsTab label="Python">
    ```dockerfile
    # Build stage
    FROM python:3.13-slim AS builder

    WORKDIR /app

    # Install build dependencies
    RUN apt-get update && apt-get install -y --no-install-recommends \
        gcc \
        && rm -rf /var/lib/apt/lists/*

    # Copy requirements and install dependencies
    COPY requirements.txt .
    RUN pip install --no-cache-dir --user -r requirements.txt

    # Runtime stage
    FROM python:3.13-slim

    WORKDIR /app

    # Copy installed packages from builder
    COPY --from=builder /root/.local /root/.local
    COPY . .

    # Make sure scripts in .local are usable
    ENV PATH=/root/.local/bin:$PATH

    # Expose the port the app listens on
    ENV PORT=8080

    # Run the application
    CMD ["python", "app.py"]
    ```
    </TabsTab>
    <TabsTab label="Rust">
    ```dockerfile
    # Build stage
    FROM rust:1.94-alpine AS builder

    WORKDIR /app

    # Copy Cargo configuration
    COPY Cargo.toml Cargo.lock ./

    # Create a minimal src directory to cache dependencies
    RUN mkdir src && \
        echo "fn main() {}" > src/main.rs && \
        cargo build --release && \
        rm -rf src

    # Copy the actual source code
    COPY src ./src

    # Build the application
    RUN cargo build --release

    # Runtime stage
    FROM scratch

    WORKDIR /app

    # Copy the compiled binary from the builder stage
    COPY --from=builder /app/target/release/my-app .

    # Expose the port the app listens on
    ENV PORT=8080

    # Run the binary
    CMD ["./my-app"]
    ```
    </TabsTab>
</Tabs>

## Configuration Restrictions

In order to ensure the proper functioning of the product, we restrict the use of certain ports and environment variables

### Blocked ports

Due to potential abuse (spam), no outbound traffic is allowed through the following ports, except from Scaleway Transactional Email SMTP servers.

* **25**
* **465**

### Unavailable custom ports
Do not have your containers listen on these ports, as they are used by our service.
* 8008
* 8012
* 8013
* 8022
* 8112
* 9090
* 9091

### Reserved environment variables

* `PORT`: Value of the port defined in the Container settings, which the container has to listen on. You can use this environment variable inside your Container for easier deployments.
* `SCW_*`: Reserved for product configuration (for example: token validation)
* `x-scw-source`: This header is reserved to determine if the request comes from a container private endpoint.

### Dedicated IP

**Not available:** Serverless products are designed to abstract away infrastructure management, to be easily scalable, and to be cost-efficient and simple. So dedicated IPs are not supported for this product.

### Protocols

Serverless Containers support HTTP/1.1 and HTTP/2 connections. HTTP/1.0 is not supported. Refer to the [dedicated troubleshooting page](/serverless-containers/troubleshooting/http1-errors/) for more information on how to solve HTTP/1.0 issues.

## Private Networks and Virtual Private Cloud (VPC)

Refer to the [dedicated documentation](/serverless-containers/reference-content/containers-private-networks/) on VPC and Serverless Containers integration for more information.

## Default values for CPU and memory limits

When container CPU and/or memory are not provided by the client, these default values are automatically used:

| Resources | Default value  |
|-----------|----------------|
| CPU       | 1000 mvCPU     |
| Memory    | 2048 MB        |

## Architecture

Image target platform must be: `linux/amd64`.

<Message type="note">
    Images with a different platform will generate an error when deploying the container.
</Message>

For example, if you build an image using an ARM CPU, such as Apple silicon M series, your image will be in the `arm64` architecture, and you will have an error message during deployment.

You must ensure that you build your image to target `amd64` architecture, to achieve this there are multiple solutions:
* You can use the following Docker command: `docker build --platform linux/amd64 .`, or
* You can use an Instance with `amd64` architecture to run your builds.

## Versioning and rollback

Scaleway Containers do not currently support versioning or automatic rollback mechanisms.
However, in the event of a failed deployment, the previously deployed version of the container will continue to handle
incoming requests for up to 24 hours. After this period, the container in error will be deleted, and requests will no
longer be served until a successful deployment is made. This ensures temporary service continuity, but it is important
to monitor and resolve deployment issues promptly, as the fallback is not intended to provide long-term version control
or rollback capabilities.

Below is an example than illustrates this behavior:

* Time +0H: The first container is deployed and works correctly.
* Time +1H: The container is redeployed, but the deployment fails, and the container ends up in an error state.
* Time +2H: Despite the failed deployment, the first container is still handling incoming requests.
* Time +25H: The 24-hour window expires, and both the first working container and the failed container are removed,
leading to service disruption until a new successful deployment is made.

## Containers sandbox

Refer to the [dedicated documentation](/serverless-containers/reference-content/containers-sandbox/) for more information on the limitations of sandbox environments for Serverless Containers.
