Back to Prefect

steps

docs/integrations/prefect-docker/api-ref/prefect_docker-deployments-steps.mdx

3.6.30.dev37.7 KB
Original Source

prefect_docker.deployments.steps

Prefect deployment steps for building and pushing Docker images.

These steps can be used in a prefect.yaml file to define the default build steps for a group of deployments, or they can be used to define the build step for a specific deployment.

!!! example Build a Docker image before deploying a flow: ```yaml build: - prefect_docker.deployments.steps.build_docker_image: id: build-image requires: prefect-docker image_name: repo-name/image-name tag: dev

push:
    - prefect_docker.deployments.steps.push_docker_image:
        requires: prefect-docker
        image_name: "{{ build-image.image_name }}"
        tag: "{{ build-image.tag }}"
```

Functions

cacheable <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/deployments/steps.py#L126" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

python
cacheable(func: Callable[P, T]) -> Callable[P, T]

build_docker_image <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/deployments/steps.py#L147" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

python
build_docker_image(image_name: str, dockerfile: str = 'Dockerfile', tag: str | None = None, additional_tags: list[str] | None = None, ignore_cache: bool = False, persist_dockerfile: bool = False, dockerfile_output_path: str = 'Dockerfile.generated', **build_kwargs: Any) -> BuildDockerImageResult

Builds a Docker image for a Prefect deployment.

Can be used within a prefect.yaml file to build a Docker image prior to creating or updating a deployment.

Args:

  • image_name: The name of the Docker image to build, including the registry and repository.
  • dockerfile: The path to the Dockerfile used to build the image. If "auto" is passed, a temporary Dockerfile will be created to build the image.
  • tag: The tag to apply to the built image.
  • additional_tags: Additional tags on the image, in addition to tag, to apply to the built image.
  • persist_dockerfile: If True and dockerfile="auto", the generated Dockerfile will be saved instead of deleted after the build.
  • dockerfile_output_path: Optional path where the auto-generated Dockerfile should be saved (e.g., "Dockerfile.generated"). Only used if persist_dockerfile is True.
  • **build_kwargs: Additional keyword arguments to pass to Docker when building the image. Available options can be found in the docker-py documentation.

Returns: A dictionary containing the image name and tag of the built image. Example: Build a Docker image prior to creating a deployment: yaml build: - prefect_docker.deployments.steps.build_docker_image: requires: prefect-docker image_name: repo-name/image-name tag: dev Build a Docker image with multiple tags: yaml build: - prefect_docker.deployments.steps.build_docker_image: requires: prefect-docker image_name: repo-name/image-name tag: dev additional_tags: - v0.1.0, - dac9ccccedaa55a17916eef14f95cc7bdd3c8199 Build a Docker image using an auto-generated Dockerfile: yaml build: - prefect_docker.deployments.steps.build_docker_image: requires: prefect-docker image_name: repo-name/image-name tag: dev dockerfile: auto Build a Docker image for a different platform: yaml build: - prefect_docker.deployments.steps.build_docker_image: requires: prefect-docker image_name: repo-name/image-name tag: dev dockerfile: Dockerfile platform: amd64 Save the auto-generated Dockerfile to disk: yaml build: - prefect_docker.deployments.steps.build_docker_image: requires: prefect-docker image_name: repo-name/image-name tag: dev dockerfile: auto persist_dockerfile: true dockerfile_output_path: Dockerfile.generated

push_docker_image <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/deployments/steps.py#L335" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

python
push_docker_image(image_name: str, tag: str | None = None, credentials: dict[str, Any] | None = None, additional_tags: list[str] | None = None, ignore_cache: bool = False) -> PushDockerImageResult

Push a Docker image to a remote registry.

Args:

  • image_name: The name of the Docker image to push, including the registry and repository.
  • tag: The tag of the Docker image to push.
  • credentials: A dictionary containing the username, password, and URL for the registry to push the image to.
  • additional_tags: Additional tags on the image, in addition to tag, to apply to the built image.

Returns: A dictionary containing the image name and tag of the pushed image. Examples: Build and push a Docker image to a private repository: yaml build: - prefect_docker.deployments.steps.build_docker_image: id: build-image requires: prefect-docker image_name: repo-name/image-name tag: dev dockerfile: auto push: - prefect_docker.deployments.steps.push_docker_image: requires: prefect-docker image_name: "{{ build-image.image_name }}" tag: "{{ build-image.tag }}" credentials: "{{ prefect.blocks.docker-registry-credentials.dev-registry }}" Build and push a Docker image to a private repository with multiple tags yaml build: - prefect_docker.deployments.steps.build_docker_image: id: build-image requires: prefect-docker image_name: repo-name/image-name tag: dev dockerfile: auto additional_tags: [ v0.1.0, dac9ccccedaa55a17916eef14f95cc7bdd3c8199 ] push: - prefect_docker.deployments.steps.push_docker_image: requires: prefect-docker image_name: "{{ build-image.image_name }}" tag: "{{ build-image.tag }}" credentials: "{{ prefect.blocks.docker-registry-credentials.dev-registry }}" additional_tags: "{{ build-image.additional_tags }}"

Classes

BuildDockerImageResult <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/deployments/steps.py#L82" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

The result of a build_docker_image step.

Attributes:

  • image_name: The name of the built image.
  • tag: The tag of the built image.
  • image: The name and tag of the built image.
  • image_id: The ID of the built image.
  • additional_tags: The additional tags on the image, in addition to tag.

PushDockerImageResult <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/deployments/steps.py#L101" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

The result of a push_docker_image step.

Attributes:

  • image_name: The name of the pushed image.
  • tag: The tag of the pushed image.
  • image: The name and tag of the pushed image.
  • additional_tags: The additional tags on the image, in addition to tag.