Skip to content

Container Support with fal

fal now supports running apps within custom Docker containers, providing greater flexibility and control over your environment.

Example: Using Custom Containers with fal Apps

Here’s a complete example demonstrating how to use custom containers with fal.

import fal
from fal.container import ContainerImage
dockerfile_str = """
FROM python:3.11
RUN apt-get update && apt-get install -y ffmpeg
RUN pip install pyjokes ffmpeg-python
"""
custom_image = ContainerImage.from_dockerfile_str(
dockerfile_str,
registries={
"https://my.registry.io/": {
"username": <username>,
"password": <password>,
},
},
)
class Test(fal.App, kind="container", image=custom_image):
machine_type = "GPU"
requirements = ["torch"]
def setup(self):
import subprocess
subprocess.run(["nvidia-smi"])
@fal.endpoint("/")
def index(self):
return "Hello, World!"

Detailed Explanation

  1. Importing fal and ContainerImage:
import fal
from fal.container import ContainerImage
  1. Creating a Dockerfile String: A multi-line string (dockerfile_str) is defined, specifying the base image as python:3.11, and installing ffmpeg and pyjokes packages.
dockerfile_str = """
FROM python:3.11
RUN apt-get update && apt-get install -y ffmpeg
RUN pip install pyjokes ffmpeg-python
"""

Alternatively, you can use a Dockerfile path to specify the Dockerfile location:

import pathlib
PWD = Path(__file__).resolve().parent
class Test(fal.App, kind="container", image=ContainerImage.from_dockerfile(f"{PWD}/Dockerfile")):

Running the App

To run the app, save the code to a file (e.g., test_container.py) and execute it using the fal run command:

Terminal window
fal run test_container.py

This example demonstrates how to leverage Docker containers in fal, enabling customized execution environments for your apps. For more details and advanced usage, refer to the fal Container Documentation.