Image and Build
Note
While using ServiceFoundry 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 viaImage
module, or give instructions on how to build the image via theBuild
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
Name | Type | Required | Description |
---|---|---|---|
type | string | true | none |
image_uri | string | true | The 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_registry | string | false | FQN of the container registry. You can the FQN of your desired container registry (or add one) in the Integrations page |
command | any | false | Override the command to run when container starts. When deploying a Job, the command can be templatized by defining params and referencing them in commandE.g. python main.py --learning_rate {{learning_rate}} |
Python Examples
from servicefoundry import (
Service, Image
)
service = Service(
...
image=Image(
image_uri="seldonio/mlserver:1.2.0",
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to pull the built image from
)
)
Build
Description
Describes how we build our code into a Docker image.
Schema
{
"type": "string",
"docker_registry": "string",
"build_source": {},
"build_spec": {}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | none |
docker_registry | string | false | FQN of the container registry. You can the FQN of your desired container registry (or add one) in the Integrations pageIntegrations page |
build_source | object | true | Source code location. |
build_spec | object | true | Instructions to build a container image out of the build source |
Python Examples
from servicefoundry import (
Service, Build, PythonBuild, LocalSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=LocalSource(
project_root_path="./"
),
build_spec=PythonBuild(
python_version="3.9",
build_context_path="./",
requirements_path="requirements.txt",
pip_packages=["requests", "numpy==1.20.0"],
apt_packages=["ffmpeg", "curl", "wget"],
command="uvicorn app:app --port 8000 --host 127.0.0.1", # or as a list ["python", "main.py"]
),
)
)
from servicefoundry import (
Service, Build, DockerFileBuild, LocalSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=LocalSource(
project_root_path="./"
),
build_spec=DockerFileBuild(
dockerfile_path='./Dockerfile',
build_context_path='./'
),
),
)
from servicefoundry import (
Service, Image
)
service = Service(
...,
image=Image(
image_uri="seldonio/mlserver:1.2.0",
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to pull the built image from
),
)
from servicefoundry import (
Service, Build, GitSource, PythonBuild
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=GitSource(
repo_url="https://github.com/myorg/myrepo",
branch_name="main", # Optional, by default the default branch configured on the repo
ref="547ea1423267902a6ff98517d4ae205d8f7c47f8", # Optional, by default latest commit on the branch
),
build_spec=PythonBuild(
python_version="3.9",
build_context_path="./",
requirements_path="requirements.txt",
pip_packages=["requests", "numpy==1.20.0"],
apt_packages=["ffmpeg", "curl", "wget"],
command="uvicorn app:app --port 8000 --host 127.0.0.1", # or as a list ["python", "main.py"]
),
),
)
from servicefoundry import (
Service, Build, DockerFileBuild, GitSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=GitSource(
repo_url="https://github.com/myorg/myrepo",
branch_name="main", # Optional, by default the default branch configured on the repo
ref="547ea1423267902a6ff98517d4ae205d8f7c47f8", # Optional, by default latest commit on the branch
),
build_spec=DockerFileBuild(
dockerfile_path='./Dockerfile',
build_context_path='./'
),
),
)
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
}
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | none |
python_version | string | true | Python version to run your application. |
build_context_path | string | true | Build path relative to project root path. |
requirements_path | string | false | Path to requirements.txt relative toPath to build context |
pip_packages | [string] | false | Define pip package requirements. |
apt_packages | [string] | false | Define Debian packages to install via apt. E.g. `["ffmpeg", "libsm6", "libxext6"] |
command | any | true | Command 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 commandE.g. python main.py --learning_rate {{learning_rate}} |
Python Examples
from servicefoundry import (
Service, Build, PythonBuild, LocalSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=LocalSource(
project_root_path="./"
),
build_spec=PythonBuild(
python_version="3.9",
build_context_path="./",
requirements_path="requirements.txt",
pip_packages=["requests", "numpy==1.20.0"],
apt_packages=["ffmpeg", "curl", "wget"],
command="uvicorn app:app --port 8000 --host 127.0.0.1", # or as a list ["python", "main.py"]
),
)
)
from servicefoundry import (
Service, Build, GitSource, PythonBuild
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=GitSource(
repo_url="https://github.com/myorg/myrepo",
branch_name="main", # Optional, by default the default branch configured on the repo
ref="547ea1423267902a6ff98517d4ae205d8f7c47f8", # Optional, by default latest commit on the branch
),
build_spec=PythonBuild(
python_version="3.9",
build_context_path="./",
requirements_path="requirements.txt",
pip_packages=["requests", "numpy==1.20.0"],
apt_packages=["ffmpeg", "curl", "wget"],
command="uvicorn app:app --port 8000 --host 127.0.0.1", # or as a list ["python", "main.py"]
),
),
)
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": {},
}
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | none |
dockerfile_path | string | true | The file path of the Dockerfile relative to project root path. |
build_context_path | string | true | Build context path for the Dockerfile relative to project root path. |
command | any | false | Override the command to run when the container starts When deploying a Job, the command can be templatized by defining params and referencing them in commandE.g. python main.py --learning_rate {{learning_rate}} |
build_args | dict | false | Build arguments to pass to --build-arg option in docker build . |
Python Examples
from servicefoundry import (
Service, Build, DockerFileBuild, LocalSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=LocalSource(
project_root_path="./"
),
build_spec=DockerFileBuild(
dockerfile_path='./Dockerfile',
build_context_path='./',
build_args={
"param": "value",
"param1": "value1",
},
),
),
)
from servicefoundry import (
Service, Build, DockerFileBuild, GitSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=GitSource(
repo_url="https://github.com/myorg/myrepo",
branch_name="main", # Optional, by default the default branch configured on the repo
ref="547ea1423267902a6ff98517d4ae205d8f7c47f8", # Optional, by default latest commit on the branch
),
build_spec=DockerFileBuild(
dockerfile_path='./Dockerfile',
build_context_path='./',
build_args={
"param": "value",
"param1": "value1",
},
),
),
)
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": false
}
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | none |
project_root_path | string | true | Local project root path. |
local_build | boolean | true | run docker build locally |
Python Examples
from servicefoundry import (
Service, Build, PythonBuild, LocalSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=LocalSource(
project_root_path="./"
),
build_spec=PythonBuild(
python_version="3.9",
build_context_path="./",
requirements_path="requirements.txt",
pip_packages=["requests", "numpy==1.20.0"],
apt_packages=["ffmpeg", "curl", "wget"],
command="uvicorn app:app --port 8000 --host 127.0.0.1", # or as a list ["python", "main.py"]
),
)
)
from servicefoundry import (
Service, Build, DockerFileBuild, LocalSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=LocalSource(
project_root_path="./"
),
build_spec=DockerFileBuild(
dockerfile_path='./Dockerfile',
build_context_path='./'
),
),
)
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
Name | Type | Required | Description |
---|---|---|---|
type | string | true | none |
repo_url | string | true | The repository URL. |
ref | string | true | The commit SHA. |
branch_name | string | false | Selecting branch will select latest commit SHA of the branch. |
Python Examples
from servicefoundry import (
Service, Build, GitSource, PythonBuild
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=GitSource(
repo_url="https://github.com/myorg/myrepo",
branch_name="main", # Optional, by default the default branch configured on the repo
ref="547ea1423267902a6ff98517d4ae205d8f7c47f8", # Optional, by default latest commit on the branch
),
build_spec=PythonBuild(
python_version="3.9",
build_context_path="./",
requirements_path="requirements.txt",
pip_packages=["requests", "numpy==1.20.0"],
apt_packages=["ffmpeg", "curl", "wget"],
command="uvicorn app:app --port 8000 --host 127.0.0.1", # or as a list ["python", "main.py"]
),
),
)
from servicefoundry import (
Service, Build, DockerFileBuild, GitSource
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=GitSource(
repo_url="https://github.com/myorg/myrepo",
branch_name="main", # Optional, by default the default branch configured on the repo
ref="547ea1423267902a6ff98517d4ae205d8f7c47f8", # Optional, by default latest commit on the branch
),
build_spec=DockerFileBuild(
dockerfile_path='./Dockerfile',
build_context_path='./'
),
),
)
RemoteSource
Description
Describes that we are using code stored in a remote respository to build our image
Schema
{
"type": "string",
"remote_uri": "string"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
type | string | true | none |
remote_uri | string | true | Remote repository URI |
Python Examples
from servicefoundry import (
Service, Build, RemoteSource, PythonBuild
)
service = Service(
...,
image=Build(
docker_registry="admin-truefoundry:production-euwe1-ecr", # optional, FQN registry to push the built image to
build_source=RemoteSource(
remote_uri="https://example.code/path/to/my/code.zip"
),
build_spec=PythonBuild(
python_version="3.9",
build_context_path="./",
requirements_path="requirements.txt",
pip_packages=["requests", "numpy==1.20.0"],
apt_packages=["ffmpeg", "curl", "wget"],
command="uvicorn app:app --port 8000 --host 127.0.0.1", # or as a list ["python", "main.py"]
),
),
)
Updated 20 days ago