From 0440d712f4f6f5389eb4fc34c7ab8cc30cce5c37 Mon Sep 17 00:00:00 2001 From: Thomas Tacquet Date: Tue, 25 Nov 2025 18:16:20 +0100 Subject: [PATCH 1/9] feat(functions): doc migrate to containers --- .../migrate-to-serverless-containers.mdx | 232 ++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx diff --git a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx new file mode 100644 index 0000000000..51a2a6e3d8 --- /dev/null +++ b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx @@ -0,0 +1,232 @@ +--- +meta: + title: How to move from Serverless Functions to Serverless Containers + description: Learn how to migrate your workloads from Scaleway Serverless Functions to Serverless Containers for greater control and flexibility. + dates: + validation: 2025-11-25 + posted: 2025-11-25 +--- +import Requirements from '@macros/iam/requirements.mdx' + + + Did you know? **Serverless Functions and Serverless Containers share the same DNA.** + Under the hood, both products run on the same architecture (based on Knative). + When you deploy a Function, Scaleway simply injects your code into a pre-built container image. + Migrating to Serverless Containers just means you take control of that container image creation yourself. + + + + +## Understanding the differences + +Scaleway Serverless Functions are excellent for getting started quickly. They allow you to deploy snippets of code without worrying about anything but the business logic. +* **Best for:** Webhooks, lightweight APIs, and glue code. +* **Key benefit:** "Zero config" deployment—just paste your code and go. + +However, as your application grows, you might hit walls regarding dependency management (e.g., needing system-level libraries like ffmpeg or specific C extensions) or complex build pipelines. This is where Serverless Containers can be more adapted. + +**Moving to Containers means:** +* You take control of the "wrapping": Instead of Scaleway wrapping your code, you write a Dockerfile. +* You gain flexibility: You can install any system library, use any language version, and control the exact OS environment. +* Better portability: A containerized app can run on Scaleway, your local machine, or any other cloud provider without changing the code. + +## 1. Containerize your Serverless Function + +The main step in migrating is creating a `Dockerfile` that replicates the runtime environment your function was using. + +Below are standard `Dockerfile` templates for the main Serverless Functions runtimes. You can add this file to the root of your project (where your `handler` or `index` file is located). + + + Scaleway Serverless Containers inject a `PORT` environment variable (defaulting to `8080`). Your application must listen on this port to receive traffic. + + + + + Use this Dockerfile to migrate from the **Node.js 22** runtime. + + ```dockerfile + # Use the official Node.js 22 Alpine image for a small footprint + FROM node:22-alpine + + # Set the working directory + WORKDIR /usr/src/app + + # Copy package files first to leverage Docker cache + COPY package*.json ./ + + # Install production dependencies + RUN npm ci --only=production + + # Copy the rest of your application code + COPY . . + + # Serverless Containers inject the PORT env var (default 8080) + ENV PORT 8080 + EXPOSE 8080 + + # Start the application + CMD [ "node", "index.js" ] + ``` + + + + Use this Dockerfile to migrate from the **Python 3.13** runtime. We recommend using a WSGI server like Gunicorn for production. + + ```dockerfile + # Use the official Python 3.13 slim image + FROM python:3.13-slim + + WORKDIR /app + + # Copy requirements and install dependencies + COPY requirements.txt . + RUN pip install --no-cache-dir -r requirements.txt + + # Copy application code + COPY . . + + # Define the default port + ENV PORT 8080 + EXPOSE 8080 + + # Run the application using Gunicorn + # Replace 'main:app' with 'your_filename:your_flask_object' + CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app + ``` + + + + Use this Dockerfile to migrate from the **Go 1.24** runtime. This uses a multi-stage build to keep the final image lightweight. + + ```dockerfile + # --- Build Stage --- + FROM golang:1.24-alpine AS builder + + WORKDIR /app + + # Copy module files and download dependencies + COPY go.mod go.sum ./ + RUN go mod download + + # Copy source code + COPY . . + + # Build the binary + RUN CGO_ENABLED=0 GOOS=linux go build -o my-function . + + # --- Run Stage --- + FROM alpine:latest + + WORKDIR /root/ + + # Copy the binary from the builder + COPY --from=builder /app/my-function . + + # Install certificates for HTTPS calls + RUN apk --no-cache add ca-certificates + + ENV PORT 8080 + EXPOSE 8080 + + CMD ["./my-function"] + ``` + + + + Use this Dockerfile to migrate from the **Rust 1.74** runtime. + + ```dockerfile + # --- Build Stage --- + FROM rust:1.74-slim as builder + + WORKDIR /usr/src/app + + # Create a new empty shell project + RUN USER=root cargo new --bin my-app + WORKDIR /usr/src/app/my-app + + # Copy manifests + COPY Cargo.toml Cargo.lock ./ + + # Build only the dependencies to cache them + RUN cargo build --release + + # Remove the dummy source + RUN rm src/*.rs + + # Copy your actual source code + COPY ./src ./src + + # Build for release + RUN rm ./target/release/deps/my_app* + RUN cargo build --release + + # --- Run Stage --- + FROM debian:bookworm-slim + + # Install OpenSSL if required + RUN apt-get update && apt-get install -y libssl-dev ca-certificates && rm -rf /var/lib/apt/lists/* + + COPY --from=builder /usr/src/app/my-app/target/release/my-app /usr/local/bin/my-app + + ENV PORT 8080 + EXPOSE 8080 + + CMD ["my-app"] + ``` + + + + Use this Dockerfile to migrate from the **PHP 8.4** runtime. + + ```dockerfile + # Use the official PHP 8.4 Apache image + FROM php:8.4-apache + + WORKDIR /var/www/html + + # Copy application source + COPY . . + + # Configure Apache to listen on the Scaleway PORT env var + RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf + + # Install required extensions (Example) + # RUN docker-php-ext-install pdo pdo_mysql + + ENV PORT 8080 + EXPOSE 8080 + + CMD ["apache2-foreground"] + ``` + + + +## 2. Build and push the image + +Once your `Dockerfile` is ready, you need to build the image and push it to your Scaleway Container Registry. + +1. Log in to your registry: + ```bash + docker login rg.fr-par.scw.cloud/your-namespace -u nologin --password-stdin <<< "$SCW_SECRET_KEY" + ``` +2. Build the image: + ```bash + docker build -t my-migrated-function:latest . + ``` +3. Tag and push the image: + ```bash + docker tag my-migrated-function:latest rg.fr-par.scw.cloud/your-namespace/my-migrated-function:latest + docker push + ``` + +## 3. Deploy to Serverless Containers + +1. Navigate to **Serverless Containers** in the Scaleway console. +2. Click **Deploy Container**. +3. Select **Scaleway Container Registry** and choose the image you just pushed (`my-migrated-function`). +4. Configure the **Port** to `8080` (or match the `PORT` env var in your Dockerfile). +5. Set the same resources (vCPU/RAM) and scaling parameters (Min/Max scale) as your original Function. +6. Click **Deploy**. + +Your code is now running as a Serverless Container, giving you the freedom to modify the OS, install binaries, and manage complex dependencies exactly as you need. From 611f37da337c70ac53b40b9e950f93a0f1164f30 Mon Sep 17 00:00:00 2001 From: Thomas Tacquet Date: Tue, 25 Nov 2025 18:36:55 +0100 Subject: [PATCH 2/9] add when to migrate section --- .../how-to/migrate-to-serverless-containers.mdx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx index 51a2a6e3d8..6b6f9b608c 100644 --- a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx +++ b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx @@ -30,6 +30,15 @@ However, as your application grows, you might hit walls regarding dependency man * You gain flexibility: You can install any system library, use any language version, and control the exact OS environment. * Better portability: A containerized app can run on Scaleway, your local machine, or any other cloud provider without changing the code. +## When to migrate to Serverless Containers? + +While Functions are excellent for "zero-config" deployments, Serverless Containers are the recommended choice when your project requirements expand. You should consider migrating if: + +* **You need custom system dependencies:** Functions run in a managed environment. If your code requires specific system libraries (e.g., `ffmpeg`, `ImageMagick`, custom C-bindings) that are not present in the standard runtime, containers allow you to install them via the Dockerfile. +* **You need full portability:** A Docker container is the industry standard for shipping code. By containerizing your application, you ensure it can run anywhere—on your local machine, on Scaleway, on Kubernetes, or any other cloud provider—without changing a single line of code. +* **You need a specific language version:** Functions support a specific list of runtimes (e.g., Node 22, Python 3.13). If you need an older version, a beta version, or a completely different language (like Java, Ruby, or .NET), Containers are the solution. +* **You have a complex build pipeline:** If your application requires a compilation step, complex asset building, or private package managers, defining these steps in a `Dockerfile` gives you granular control over the build process. + ## 1. Containerize your Serverless Function The main step in migrating is creating a `Dockerfile` that replicates the runtime environment your function was using. @@ -230,3 +239,8 @@ Once your `Dockerfile` is ready, you need to build the image and push it to your 6. Click **Deploy**. Your code is now running as a Serverless Container, giving you the freedom to modify the OS, install binaries, and manage complex dependencies exactly as you need. + +## Additional content + +For advanced usage, such as larger projects with dependencies, automation, and more check out our [GitHub repository](https://github.com/scaleway/serverless-examples) for more examples. + From 7f380464434dd285e24daa3371a00078ecb8fd55 Mon Sep 17 00:00:00 2001 From: Thomas Tacquet Date: Tue, 25 Nov 2025 18:40:34 +0100 Subject: [PATCH 3/9] fix rust version --- .../how-to/migrate-to-serverless-containers.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx index 6b6f9b608c..7858420cac 100644 --- a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx +++ b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx @@ -141,12 +141,12 @@ Below are standard `Dockerfile` templates for the main Serverless Functions runt ``` - + Use this Dockerfile to migrate from the **Rust 1.74** runtime. ```dockerfile # --- Build Stage --- - FROM rust:1.74-slim as builder + FROM rust:1.85-slim as builder WORKDIR /usr/src/app From 8fa51500bc269a00ea43d34b46825e33599d7086 Mon Sep 17 00:00:00 2001 From: Thomas Tacquet Date: Tue, 25 Nov 2025 18:41:54 +0100 Subject: [PATCH 4/9] grammar --- .../how-to/migrate-to-serverless-containers.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx index 7858420cac..15aca65202 100644 --- a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx +++ b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx @@ -23,7 +23,7 @@ Scaleway Serverless Functions are excellent for getting started quickly. They al * **Best for:** Webhooks, lightweight APIs, and glue code. * **Key benefit:** "Zero config" deployment—just paste your code and go. -However, as your application grows, you might hit walls regarding dependency management (e.g., needing system-level libraries like ffmpeg or specific C extensions) or complex build pipelines. This is where Serverless Containers can be more adapted. +However, as your application grows, you face limitations regarding dependency management (e.g., needing system-level libraries like ffmpeg or specific C extensions) or complex build pipelines. This is where Serverless Containers can be more adapted. **Moving to Containers means:** * You take control of the "wrapping": Instead of Scaleway wrapping your code, you write a Dockerfile. From af2d825d4af04412561e20672f7171da1a56db07 Mon Sep 17 00:00:00 2001 From: Thomas TACQUET Date: Fri, 28 Nov 2025 15:47:42 +0100 Subject: [PATCH 5/9] Apply suggestions from code review Co-authored-by: ldecarvalho-doc <82805470+ldecarvalho-doc@users.noreply.github.com> --- .../how-to/migrate-to-serverless-containers.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx index 15aca65202..18db3ebd40 100644 --- a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx +++ b/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx @@ -23,7 +23,7 @@ Scaleway Serverless Functions are excellent for getting started quickly. They al * **Best for:** Webhooks, lightweight APIs, and glue code. * **Key benefit:** "Zero config" deployment—just paste your code and go. -However, as your application grows, you face limitations regarding dependency management (e.g., needing system-level libraries like ffmpeg or specific C extensions) or complex build pipelines. This is where Serverless Containers can be more adapted. +However, as your application grows, you face limitations regarding dependency management (e.g., needing system-level libraries like ffmpeg or specific C extensions) or complex build pipelines. This is where Serverless Containers can be more adapted. **Moving to Containers means:** * You take control of the "wrapping": Instead of Scaleway wrapping your code, you write a Dockerfile. @@ -39,7 +39,7 @@ While Functions are excellent for "zero-config" deployments, Serverless Containe * **You need a specific language version:** Functions support a specific list of runtimes (e.g., Node 22, Python 3.13). If you need an older version, a beta version, or a completely different language (like Java, Ruby, or .NET), Containers are the solution. * **You have a complex build pipeline:** If your application requires a compilation step, complex asset building, or private package managers, defining these steps in a `Dockerfile` gives you granular control over the build process. -## 1. Containerize your Serverless Function +## Containerize your Serverless Function The main step in migrating is creating a `Dockerfile` that replicates the runtime environment your function was using. @@ -211,7 +211,7 @@ Below are standard `Dockerfile` templates for the main Serverless Functions runt -## 2. Build and push the image +## Build and push the image Once your `Dockerfile` is ready, you need to build the image and push it to your Scaleway Container Registry. @@ -229,7 +229,7 @@ Once your `Dockerfile` is ready, you need to build the image and push it to your docker push ``` -## 3. Deploy to Serverless Containers +## Deploy to Serverless Containers 1. Navigate to **Serverless Containers** in the Scaleway console. 2. Click **Deploy Container**. From b651dc8bfd304a64b8c1c775bce9de29963ea2d1 Mon Sep 17 00:00:00 2001 From: Thomas Tacquet Date: Fri, 28 Nov 2025 15:56:32 +0100 Subject: [PATCH 6/9] rename due to conflict in how-to section --- ...e-to-serverless-containers.mdx => functions-to-containers.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pages/serverless-containers/reference-content/{migrate-to-serverless-containers.mdx => functions-to-containers.mdx} (100%) diff --git a/pages/serverless-containers/reference-content/migrate-to-serverless-containers.mdx b/pages/serverless-containers/reference-content/functions-to-containers.mdx similarity index 100% rename from pages/serverless-containers/reference-content/migrate-to-serverless-containers.mdx rename to pages/serverless-containers/reference-content/functions-to-containers.mdx From b7b9bfdd73395636d4b995974e707c3131af8651 Mon Sep 17 00:00:00 2001 From: Thomas Tacquet Date: Fri, 28 Nov 2025 15:57:14 +0100 Subject: [PATCH 7/9] rvt --- ...ons-to-containers.mdx => migrate-to-serverless-containers.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pages/serverless-containers/reference-content/{functions-to-containers.mdx => migrate-to-serverless-containers.mdx} (100%) diff --git a/pages/serverless-containers/reference-content/functions-to-containers.mdx b/pages/serverless-containers/reference-content/migrate-to-serverless-containers.mdx similarity index 100% rename from pages/serverless-containers/reference-content/functions-to-containers.mdx rename to pages/serverless-containers/reference-content/migrate-to-serverless-containers.mdx From 12c65ca690060037847b6a3ad0dbc1a7a56775da Mon Sep 17 00:00:00 2001 From: Thomas Tacquet Date: Fri, 28 Nov 2025 16:03:45 +0100 Subject: [PATCH 8/9] add some references --- pages/serverless-functions/faq.mdx | 4 ++++ ...ss-containers.mdx => migrate-functions-to-containers.mdx} | 0 .../reference-content/functions-runtimes.mdx | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) rename pages/serverless-functions/how-to/{migrate-to-serverless-containers.mdx => migrate-functions-to-containers.mdx} (100%) diff --git a/pages/serverless-functions/faq.mdx b/pages/serverless-functions/faq.mdx index 1e5ee878bd..c0a26fb89f 100644 --- a/pages/serverless-functions/faq.mdx +++ b/pages/serverless-functions/faq.mdx @@ -39,6 +39,10 @@ Serverless Functions namespaces and Container Registry namespaces observe the fo Scaling in Serverless Containers and Serverless Functions is handled automatically by the platform. When demand increases - more requests or events - the platform creates additional instances to handle the load. When demand decreases, instances that are not used anymore are removed. This ensures optimal performance without manual intervention. +### How to migrate from Serverless Functions to Serverless Containers? + +Serverless Functions offers several runtimes and versions, in some cases more control is required or specific dependencies needs some runtime tuning, for these cases please read [How to migrate from Functions to Containers](/serverless-functions/how-to/migrate-to-serverless-containers.mdx). + ## Offering and availability ### What runtimes are available on Serverless Functions? diff --git a/pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx b/pages/serverless-functions/how-to/migrate-functions-to-containers.mdx similarity index 100% rename from pages/serverless-functions/how-to/migrate-to-serverless-containers.mdx rename to pages/serverless-functions/how-to/migrate-functions-to-containers.mdx diff --git a/pages/serverless-functions/reference-content/functions-runtimes.mdx b/pages/serverless-functions/reference-content/functions-runtimes.mdx index 98805184bd..f72aae6420 100644 --- a/pages/serverless-functions/reference-content/functions-runtimes.mdx +++ b/pages/serverless-functions/reference-content/functions-runtimes.mdx @@ -15,6 +15,10 @@ We currently support five languages: * PHP * Rust + + For more flexible runtime management and dependencies, check [How to migrate from Functions to Containers](/serverless-functions/how-to/migrate-to-serverless-containers.mdx). + + ## Runtime lifecycle New runtimes are added periodically, based on user demand. @@ -192,4 +196,3 @@ Supported PHP extensions for the [PHP 8.4](https://www.php.net/ChangeLog-8.php#P | xmldiff | ✓ | xmlreader | ✓ | xmlrpc | ✓ | xmlwriter | ✓ | | xsl | ✓ | yac | ✓ | yaml | ✓ | Zend OPcache | ✓ | | zephir_parser | ✓ | zip | ✓ | zlib | ✓ | zstd | ✓ | - From e1151bf5afc50b02b3acf6b345403c1185fc621b Mon Sep 17 00:00:00 2001 From: Samy OUBOUAZIZ Date: Wed, 3 Dec 2025 11:52:16 +0100 Subject: [PATCH 9/9] docs(srv): doc review --- .../migrate-functions-to-containers.mdx | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/pages/serverless-functions/how-to/migrate-functions-to-containers.mdx b/pages/serverless-functions/how-to/migrate-functions-to-containers.mdx index 18db3ebd40..5068a2368e 100644 --- a/pages/serverless-functions/how-to/migrate-functions-to-containers.mdx +++ b/pages/serverless-functions/how-to/migrate-functions-to-containers.mdx @@ -8,35 +8,43 @@ meta: --- import Requirements from '@macros/iam/requirements.mdx' - - Did you know? **Serverless Functions and Serverless Containers share the same DNA.** - Under the hood, both products run on the same architecture (based on Knative). - When you deploy a Function, Scaleway simply injects your code into a pre-built container image. - Migrating to Serverless Containers just means you take control of that container image creation yourself. - + +Serverless Functions and Serverless Containers share the same architecture (based on Knative). +When you deploy a Function, Scaleway simply injects your code into a pre-built container image. + +Migrating to Serverless Containers just means you take control of that container image creation yourself. ## Understanding the differences -Scaleway Serverless Functions are excellent for getting started quickly. They allow you to deploy snippets of code without worrying about anything but the business logic. +Scaleway Serverless Functions allow you to quickly deploy snippets of code without worrying about anything but the business logic. + * **Best for:** Webhooks, lightweight APIs, and glue code. * **Key benefit:** "Zero config" deployment—just paste your code and go. -However, as your application grows, you face limitations regarding dependency management (e.g., needing system-level libraries like ffmpeg or specific C extensions) or complex build pipelines. This is where Serverless Containers can be more adapted. +However, as your application grows, you face limitations regarding dependency management (e.g., needing system-level libraries like ffmpeg or specific C extensions), or complex build pipelines. + +This is where Serverless Containers can be more adapted. **Moving to Containers means:** + * You take control of the "wrapping": Instead of Scaleway wrapping your code, you write a Dockerfile. * You gain flexibility: You can install any system library, use any language version, and control the exact OS environment. * Better portability: A containerized app can run on Scaleway, your local machine, or any other cloud provider without changing the code. ## When to migrate to Serverless Containers? -While Functions are excellent for "zero-config" deployments, Serverless Containers are the recommended choice when your project requirements expand. You should consider migrating if: +While Functions are excellent for "zero-config" deployments, Serverless Containers are the recommended choice when your project requirements expand. + +Consider migrating if: * **You need custom system dependencies:** Functions run in a managed environment. If your code requires specific system libraries (e.g., `ffmpeg`, `ImageMagick`, custom C-bindings) that are not present in the standard runtime, containers allow you to install them via the Dockerfile. -* **You need full portability:** A Docker container is the industry standard for shipping code. By containerizing your application, you ensure it can run anywhere—on your local machine, on Scaleway, on Kubernetes, or any other cloud provider—without changing a single line of code. -* **You need a specific language version:** Functions support a specific list of runtimes (e.g., Node 22, Python 3.13). If you need an older version, a beta version, or a completely different language (like Java, Ruby, or .NET), Containers are the solution. + +* **You need full portability:** A Docker container is the industry standard for shipping code. By containerizing your application, you ensure it can run anywhere: on your local machine, on various Scaleway products, on Kubernetes clusters, or any other cloud provider, without changing a single line of code. + +* **You need a specific language version:** Serverless Functions support a specific list of runtimes (e.g., Node 22, Python 3.13). If you need an older version, a beta version, or a completely different language (like Java, Ruby, or .NET), Serverless Containers are the solution. + * **You have a complex build pipeline:** If your application requires a compilation step, complex asset building, or private package managers, defining these steps in a `Dockerfile` gives you granular control over the build process. ## Containerize your Serverless Function @@ -229,18 +237,20 @@ Once your `Dockerfile` is ready, you need to build the image and push it to your docker push ``` +Refer to the [dedicated documentation](/serverless-containers/how-to/build-push-container-image/) for more information on how to build and push images to the Scaleway Container Registry. + ## Deploy to Serverless Containers -1. Navigate to **Serverless Containers** in the Scaleway console. -2. Click **Deploy Container**. +1. Navigate to **Serverless Containers** in the [Scaleway console](https://console.scaleway.com). +2. Click **Deploy container**. 3. Select **Scaleway Container Registry** and choose the image you just pushed (`my-migrated-function`). -4. Configure the **Port** to `8080` (or match the `PORT` env var in your Dockerfile). -5. Set the same resources (vCPU/RAM) and scaling parameters (Min/Max scale) as your original Function. +4. Set the **Port** to `8080` (or match the `PORT` environment variable in your Dockerfile). +5. Set the same resources (vCPU/RAM) and scaling parameters (min/max scale) as your original function. 6. Click **Deploy**. Your code is now running as a Serverless Container, giving you the freedom to modify the OS, install binaries, and manage complex dependencies exactly as you need. ## Additional content -For advanced usage, such as larger projects with dependencies, automation, and more check out our [GitHub repository](https://github.com/scaleway/serverless-examples) for more examples. +For advanced usage, such as larger projects with dependencies, automation, and more, check out our [GitHub repository](https://github.com/scaleway/serverless-examples) for more examples.