0

任何和所有的帮助表示赞赏!我特别尝试在 Prefect 流程中使用 DockerRun 流程配置。DockerRun 流配置使用 python Docker SDK 的“create_host_config”。如果我挂载本地路径,则 Docker 代理绑定和读取/写入路径没有问题。但是,当我通过网络路径时,我会收到 2 个错误中的 1 个,具体取决于我的配置方式。

  1. 第一个错误说我没有使用有效字符,我必须传递绝对路径(抱怨 \ 我相信)
  2. 第二个错误抱怨当我尝试传递我的用户名/密码以访问 Windows 网络路径时传递了无效的参数。

例如:

### THIS CODE ALLOWS ME TO BIND A LOCAL FILE PATH
from prefect.run_configs import DockerRun
import docker

with Flow("some_flow") as flow:
  # execute tasks

flow.storage = Docker(...)

flow.run_config = DockerRun(labels=['my-label']
                            ,host_config={'mounts':[docker.types.Mount(target='/public'
                                                                        ,source=r'//c/some/local/path'
                                                                        ,type='bind')
                                                ]
                                        }
                        )

### THIS CODE THROWS BAD CHARACTER ERROR 
flow.run_config = DockerRun(labels=['my-label']
                            ,host_config={'mounts':[docker.types.Mount(target='/public'
                                                    ,source=r'\\path\to\windows\network\shared\drive'
                                                                        ,type='bind')
                                                ]
### THIS CODE THROWS AN INVALID ARGUMENT ERROR
flow.run_config = DockerRun(labels=['my-label']
                                    ,host_config={'mounts':[
                                        docker.types.Mount(target='/public'
                                                            ,source='local'
                                                            ,type='volume'
                                                            ,driver_config=docker.types.DriverConfig(name='local'
                                                                                                    ,options={'type':'cifs'
                                                                                                            ,'device':r'\\path\to\windows\network\drive'
                                                                                                            ,'credentials':'user=<username>,domain=<windows_domain>,password=<password>'
                                                                                                            }
                                                                                                    )  
                                                            )
                                                        ]
                                                }           
                            )
4

0 回答 0