DigitalOcean:如何通过 Java API 在新创建的 Droplet 上执行 运行 Docker 命令
DigitalOcean: How to run Docker command on newly created Droplet via Java API
我正在尝试创建一个新的 Droplet,然后通过 UserData bash 脚本启动 Docker 命令。我在创建 Droplet 时通过 Java API 设置用户数据,并观察到我创建的测试文件和日志已创建。
newDroplet.setUserData("#!/bin/bash\n" +
"touch /test.txt;"+
"docker login --username=myname--password=mypass > /loginlog;"+
"docker pull mybuild > /pulllog;"+
"docker run --log-opt max-size=1g --net host --name myserver -t -i mybuild > /runlog;");
loginlog 和 pulllog 都显示成功的结果。但是文件 运行log.
中不存在任何内容
我可以通过 ssh 进入 Droplet,然后 运行 使用完全相同的 docker 命令,它 运行 就像预期的那样。为什么不能是用户数据脚本中的 运行?为什么没有生成输出?
问题最终出现在 docker 运行 命令中的 -t 标志。显然这不起作用,因为它不是终端或类似的东西。移除标志,它 运行 没问题。
我正在尝试创建一个新的 Droplet,然后通过 UserData bash 脚本启动 Docker 命令。我在创建 Droplet 时通过 Java API 设置用户数据,并观察到我创建的测试文件和日志已创建。
newDroplet.setUserData("#!/bin/bash\n" +
"touch /test.txt;"+
"docker login --username=myname--password=mypass > /loginlog;"+
"docker pull mybuild > /pulllog;"+
"docker run --log-opt max-size=1g --net host --name myserver -t -i mybuild > /runlog;");
loginlog 和 pulllog 都显示成功的结果。但是文件 运行log.
中不存在任何内容我可以通过 ssh 进入 Droplet,然后 运行 使用完全相同的 docker 命令,它 运行 就像预期的那样。为什么不能是用户数据脚本中的 运行?为什么没有生成输出?
问题最终出现在 docker 运行 命令中的 -t 标志。显然这不起作用,因为它不是终端或类似的东西。移除标志,它 运行 没问题。