【问题标题】:How to create a sh file to change directory and perform operations如何创建 sh 文件以更改目录并执行操作
【发布时间】:2020-01-12 11:12:51
【问题描述】:

我正在尝试使用在我的管道中运行的 sh 文件连接到 linux vm,以创建小型 CI/CD 解决方案。我的想法是登录到 vm 并执行 docker compose down/up 操作。

我的虚拟机是 ubuntu 18

这是 bash 文件中的代码。

sshpass -p mypassword ssh -tt -o StrictHostKeyChecking=no user@vmip
cd ~ /folder/subfolder
docker-compose down
docker-compose up

我尝试在本地运行它,但出现此错误:

nodename nor servname provided, or not known
: No such file or directoryfolder/subfolder
No such command: down

有什么解决方法吗?

提前致谢!

【问题讨论】:

  • 波浪号和第一个斜线之间的空格是有意的吗? (第 2 行)您似乎连第一行都没有。
  • 看起来你的脚本中有 dos 行结尾。通过dos2unix 实用程序运行您的脚本并在十六进制编辑器hexdump -Ccat -v 下检查。
  • 空格不是故意的,是错字,没有意识到谢谢!关于连接线,它是单独执行的。在 bash 中执行时不确定它是否有效。
  • 还要注意ssh之后的命令会在local系统上运行。我会将“运行这些命令”和“远程”部分分开,然后执行ssh user@vmip ./restart-docker-app 之类的操作。
  • 优秀@DavidMaze。不知道在本地运行的命令。将尝试您的解决方案

标签: bash docker ubuntu-18.04 bitbucket-pipelines


【解决方案1】:

我同意您的 cmets 中的 Cyrus。确保 docker-compose 已安装在您的 VM 上。此外,为了安全起见,我建议您尝试以下方式,并为您自己的理智提供一些反馈。

if ! [ -x "$(command -v docker-compose)" ]; then
  echo 'Error: docker-compose is not installed.' >&2
  exit 1
fi

以上将确保您在继续之前安装了 docker-compose。

此外,我建议按照此思路做一些事情来获得反馈,并记住 docker-compose up 的 -d。

docker-compose down
echo

docker-compose up -d
echo

如果您需要 docker 容器的新实例,也不要忘记构建它们,否则您只会不断重新加载以前构建的容器,这可能会成为一个问题,具体取决于您在其中放置的内容。

docker-compose build
echo

希望这会有所帮助。

【讨论】:

  • -d 只是确保您不会将容器日志强制到当前屏幕/终端。
  • 嗨,我确实安装了 docker 和 docker compose。实际上,虚拟机已经有了一个可行的解决方案。我想要的是创建 CI/CD 解决方案
  • 嗯,抱歉,您的问题对我来说不是很清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
相关资源
最近更新 更多