Image and Build

📘

Note

While using TrueFoundry python SDK type is not a required field in any of the imported classes
For image you can either give link to a pre-existing image via Image module, or give instructions on how to build the image via the Build class

Image

Description

Describes that we are using a pre-built image stored in a Docker Image registry

Schema

{
  "type": "string",
  "image_uri": "string",
  "docker_registry": "string",
  "command": null
}

Properties

NameTypeRequiredDescription
typestringtrue+value=image
image_uristringtrueThe image URI. Specify the name of the image and the tag.
If the image is in Dockerhub, you can skip registry-url (for e.g. tensorflow/tensorflow).
You can use an image from a private registry using Advanced fields
docker_registrystringfalseFQN of the container registry. You can the FQN of your desired container registry (or add one)
in the Integrations pageIntegrations page
commandanyfalseOverride the command to run when container starts.
When deploying a Job, the command can be templatized by defining params and referencing them in command
E.g. python main.py --learning_rate {{learning_rate}}

Build

Description

Describes how we build our code into a Docker image.

Schema

{
  "type": "string",
  "docker_registry": "string",
  "build_source": {},
  "build_spec": {}
}

Properties

NameTypeRequiredDescription
typestringtrue+value=build
docker_registrystringfalseFQN of the container registry. You can the FQN of your desired container registry (or add one)
in the Integrations pageIntegrations page
build_sourceobjecttrueSource code location.
build_specobjecttrueInstructions to build a container image out of the build source

Build Spec

The modules below help define the build specification.

PythonBuild

Description

Describes that we are using python to build a container image with a specific python version and pip packages installed.

Schema

{
  "type": "string",
  "python_version": "3.9",
  "build_context_path": "./",
  "requirements_path": "string",
  "pip_packages": [
    "string"
  ],
  "apt_packages": [
    "string"
  ],
  "command": null,
  "cuda_version": "string"
}

Properties

NameTypeRequiredDescription
typestringtrue+value=tfy-python-buildpack
python_versionstringtruePython version to run your application. Should be one of the tags listed on Official Python Docker Page
build_context_pathstringtrueBuild path relative to project root path.
requirements_pathstringfalsePath to requirements.txt relative to
Path to build context
pip_packages[string]falseDefine pip package requirements.
In Python/YAML E.g. ["fastapi>=0.90,<1.0", "uvicorn"]
apt_packages[string]falseDebian packages to install via apt get.
In Python/YAML E.g. ["git", "ffmpeg", "htop"]
commandanytrueCommand to run when the container starts.
Command will be set as the Entrypoint of the generated image.
When deploying a Job, the command can be templatized by defining params and referencing them in command
E.g. python main.py --learning_rate {{learning_rate}}
cuda_versionstringfalseVersion of CUDA Toolkit and CUDNN to install in the image
These combinations are based off of publically available docker images on docker hub
You can also specify a valid tag of the form {cuda_version_number}-cudnn{cudnn_version_number}-{runtime/devel}-ubuntu{ubuntu_version}
Refer https://hub.docker.com/r/nvidia/cuda/tags for valid set of values
Note: We use deadsnakes ubuntu ppa to add Python that currently supports only Ubuntu 18.04, 20.04 and 22.04

DockerFileBuild

Description

Describes that we are using a dockerfile to build our image

Schema

{
  "type": "string",
  "dockerfile_path": "./Dockerfile",
  "build_context_path": "./",
  "command": null,
  "build_args": {
    "property1": "string",
    "property2": "string"
  }
}

Properties

NameTypeRequiredDescription
typestringtrue+value=dockerfile
dockerfile_pathstringtrueThe file path of the Dockerfile relative to project root path.
build_context_pathstringtrueBuild context path for the Dockerfile relative to project root path.
commandanyfalseOverride the command to run when the container starts
When deploying a Job, the command can be templatized by defining params and referencing them in command
E.g. python main.py --learning_rate {{learning_rate}}
build_argsobjectfalseBuild arguments to pass to docker build.

Build Source

The modules below help define the build specification.

LocalSource

Description

Describes that we are using code stored in a local developement environment to build our image

Schema

{
  "type": "string",
  "project_root_path": "./",
  "local_build": true
}

Properties

NameTypeRequiredDescription
typestringtrue+value=local
project_root_pathstringtrueLocal project root path.
local_buildbooleantruerun docker build locally

GitSource

Description

Describes that we are using code stored in a git repository to build our image

Schema

{
  "type": "string",
  "repo_url": "string",
  "ref": "string",
  "branch_name": "string"
}

Properties

NameTypeRequiredDescription
typestringtrue+value=git
repo_urlstringtrueThe repository URL.
refstringtrueThe commit SHA.
branch_namestringfalseSelecting branch will select latest commit SHA of the branch.

RemoteSource

Description

Describes that we are using code stored in a remote respository to build our image

Schema

{
  "type": "string",
  "remote_uri": "string"
}

Properties

NameTypeRequiredDescription
typestringtrue+value=remote
remote_uristringtrueRemote repository URI