https://prefect.io logo
d

Darian

07/24/2023, 9:42 AM
Hi, I apologize if this question seems rather obvious to most of you, but I am missing some conceptual/architectural understanding regarding prefect's dockerized containers flow execution. My workflow execution expected design is as follows: Some background: My Prefect Orion server is installed using docker-compose, (v 2.10.17) as an operational Minio server runs fine on the same Azure VM. I have created several custom docker images based on Prefect’s base image for the same version as the server. I have several compute-infrastructure machines located on Azure VMs, docker engine configured and properly running data-pipeline workloads using remote execution. Now for the question: I would like to run Prefect Flows on each of the Azure VMs, using scheduled Flow Runs, Each Flow Run should be executed in a VM (that is currently free to work), presumably from a Work Queue (with a tag for Flow Runs per specific VM hardware). The Flow Runs are expected to be pulled from the Work Queue and then pull the relevant docker image (if not present or updated) to the specific ‘pulling’ VM. After the Docker image is pulled, it should be run, with a specific set of parameters (or configuration), presumably using a SubFlow and/or Tasks. I expect to be able to see the Flow Run progress from each of the target VMs in close to real-time, using the Orion front-end. The Flow Runs should be running in parallel, each on a separate VM, the Flow Run itself, running on a specific VM is sequential. My efforts till now resulted in being able to run the Docker image container but the State was stuck on ‘RUNNING’ ‘indefinitely’ and Prefect’s was not able to present the container’s updated state and thus proceed with the workflow/work queue execution. 1. Are my expectations possible using Prefect? 2. How should I go about making this possible? Thank you all for taking the time to read this and possibly provide meaningful insights...
d

Deceivious

07/24/2023, 12:16 PM
This is possible. Look into
Deployment.build_from_flow
method. You can send your docker manifest in it.
d

Darian

07/24/2023, 1:45 PM
Thanks @Deceivious, I seems to have succeeded pulling and running the default docker image (using an Agent, as Workers do not yet support remote-storage), What I am currently tackling is the authentication to my private docker registry - hosted using Harbor (https://goharbor.io/)