从Docker容器A(在Docker容器B上)运行Bash脚本

我有两个通过Docker Compose文件configuration的Docker容器。

  • Docker容器A – (teamcity-agent)
  • Docker容器B – (构build工具)

两者都启动正常。 但作为TeamCity构build过程的一部分,我希望代理(容器A)运行Docker容器B上的bash脚本(只有B可以运行此脚本)。

我尝试使用Team City中的SSH构build步骤进行设置,但是我拒绝了连接。

进一步阅读它显示,SSH没有在容器中启用,我不应该真的试图SSH到一个容器。

那么如何让容器A运行容器B上的脚本并查看脚本的输出?

这个最好的做法是什么?

不修改应用程序本身的唯一方法是通过SSH。 这是完全错误的,你不能SSH到一个容器。 我使用SSH到数据库容器中运行数据库导出。

首先确保在B上安装了openssh-server。然后,您必须在A和B之间设置无密码连接。

然后确保在docker-compose文件中链接你的容器,这样你就不需要暴露SSH端口。

片段添加到容器B的Dockerfile中

RUN apt-get install -q -y openssh-server ADD id_rsa.pub /home/ubuntu/.ssh/authorized_keys RUN chown -R ubuntu:ubuntu /home/ubuntu/.ssh ; \ chmod 700 /home/ubuntu/.ssh ; \ chmod 600 /home/ubuntu/.ssh/authorized_keys 

你也可以在主机的crontab中使用docker exec在容器外运行脚本。 但我认为你不是在寻找这个极端的解决scheme。

我可以通过评论来帮助你

问候