Fugo Takefusa
09/18/2025, 3:31 AMMarvin
09/18/2025, 3:31 AMMarvin
09/18/2025, 3:33 AMdockerfile
.
Key points:
- Use prefect_docker.deployments.steps.build_docker_image
with dockerfile: "<path-to-your-Dockerfile>"
.
- Reference the built image in your work pool job_variables.image
with {{ build_image.image }}
(the step’s id
must be build_image
or you must adjust the template accordingly).
- Keep tags unique if you’re pushing to the same repo to avoid collisions.
Option A: multiple build anchors with different Dockerfiles
name: prefect
prefect-version: 3.4.7
definitions:
work_pools:
docker_worker_pool: &docker_worker_pool
name: docker-worker-pool
work_queue_name: null
job_variables:
image: '{{ build_image.image }}'
actions:
# Base build config (to merge into others)
docker_build_base: &docker_build_base
- prefect_docker.deployments.steps.build_docker_image: &docker_build_config
id: build_image
requires: prefect-docker>=0.3.1
image_name: fugotakefusaptml/prefect-docker-repo
tag: dev
dockerfile: Dockerfile
# Variant 1: uses sample.Dockerfile
docker_build_sample: &docker_build_sample
- prefect_docker.deployments.steps.build_docker_image:
<<: *docker_build_config
tag: sample
dockerfile: sample.Dockerfile
# Variant 2: uses buy.Dockerfile
docker_build_buy: &docker_build_buy
- prefect_docker.deployments.steps.build_docker_image:
<<: *docker_build_config
tag: buy
dockerfile: buy.Dockerfile
# Variant 3: uses sell.Dockerfile
docker_build_sell: &docker_build_sell
- prefect_docker.deployments.steps.build_docker_image:
<<: *docker_build_config
tag: sell
dockerfile: sell.Dockerfile
deployments:
- name: deploy_buy1
flow_name: deploybuy
entrypoint: data_flows/deploy_buy.py:buy
work_pool: *docker_worker_pool
build: *docker_build_buy
- name: deploy_sell1
flow_name: deploysell
entrypoint: data_flows/deploy_sell.py:sell
work_pool: *docker_worker_pool
build: *docker_build_sell
Option B: inline per-deployment build steps
deployments:
- name: deploy_buy1
flow_name: deploybuy
entrypoint: data_flows/deploy_buy.py:buy
work_pool:
name: docker-worker-pool
job_variables:
image: '{{ build_image.image }}'
build:
- prefect_docker.deployments.steps.build_docker_image:
id: build_image
requires: prefect-docker>=0.3.1
image_name: fugotakefusaptml/prefect-docker-repo
tag: buy
dockerfile: buy.Dockerfile
- name: deploy_sample1
flow_name: deploysample
entrypoint: data_flows/deploy_sample.py:sample
work_pool:
name: docker-worker-pool
job_variables:
image: '{{ build_image.image }}'
build:
- prefect_docker.deployments.steps.build_docker_image:
id: build_image
requires: prefect-docker>=0.3.1
image_name: fugotakefusaptml/prefect-docker-repo
tag: sample
dockerfile: sample.Dockerfile
Notes:
- Using the same id: build_image
in each deployment is fine; each deployment resolves its own step results.
- If you push images, add corresponding push steps (anchored or inline) and keep tag
consistent.
Docs and references:
- Prefect 3 prefect.yaml guide: prefect.yaml (3.x)
- Docker steps source (shows available parameters): prefect_docker.deployments.stepsMarvin
09/18/2025, 3:33 AM