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 ffmpegRUN 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
- Importing fal and ContainerImage:
import falfrom fal.container import ContainerImage
- Creating a Dockerfile String:
A multi-line string (
dockerfile_str
) is defined, specifying the base image aspython:3.11
, and installingffmpeg
andpyjokes
packages.
dockerfile_str = """FROM python:3.11
RUN apt-get update && apt-get install -y ffmpegRUN pip install pyjokes ffmpeg-python"""
Alternatively, you can use a Dockerfile path to specify the Dockerfile location:
import pathlibPWD = 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:
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.