scala – FTP无法从mesos docker容器中运行

我有使用akka steams的
scala应用程序.所以我的应用程序的流程是这样的:

1. Check if file exists on FTP - I'm doing it with the org.apache.commons.net.ftp.FTPClient
2. If it exists stream it via alpakka library(and make some stream transformations)

我的应用程序在本地工作,它可以连接到服务器.

问题是它被部署到dcos / mesos时.我遇到了一个问题:

java.io.IOException: /path/file.txt: No such file or directory

我可以肯定地说文件仍然存在.此外,当我尝试通过ftp从本地连接docker容器时我得到了这样的东西:

ftp> open some.ftp.address.com
Connected to some.ftp.address.com.
220 Microsoft FTP Service
Name (some.ftp.address.com:root): USER
331 Password required
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
501 Server cannot accept argument.
ftp: bind: Address already in use
ftp> 

最佳答案 不确定它是否仍然有用,但我也让我的ftp客户端在将数据连接更改为被动后从Docker容器内传输数据.我认为活动模式要求客户端具有开放端口,服务器在返回文件列表结果和数据传输期间连接到这些端口.但是,由于请求未通过路由(例如在NAT:et网络中),因此无法从docker容器外部访问客户端端口.

找到这篇文章解释主动/被动FTP连接

https://labs.daemon.com.au/t/active-vs-passive-ftp/182

点赞