对于通过端口(-p 5000:5000
)在网络上公开的作曲服务,docker提供各种帮助(例如docker-compose)。
我正在寻找的是一种在docker容器中提供某些二进制应用程序作为服务的方法。例如:
我目前的方法是使用一个小的shell脚本来传递参数,并负责映射当前目录:
runbox(){
current_dir=${PWD##*/}
docker run --rm -it \
-v ${PWD}:/home/dev/${current_dir} \
-w /home/dev/${current_dir} \
box:latest \
/bin/bash -c "$@"
}
使用它看起来像这样:
runbox "g++ --version"
与本地运行相比:
g++ --version
现在假设我已经 n 这样的服务,我如何组合它们所有这些服务都可以在另一个容器中使用(例如在ci上运行) )?
Services running
in Docker containers
+---------------------+
| | +---------+
| CI Docker Container +-----> | gcc |
| | +---------+
| |
| make +-----> +---------+
| | | protoc |
| | +---------+
+----------------+----+
| +---------+
+----------> | clang |
+---------+
经常调用命令非常的开销是多少?
答案 0 :(得分:0)
只要CI允许您访问docker引擎(通过套接字或端口),无论它是否在容器中运行都无关紧要。
如果您正在使用make并运行容器中的项目任务,那么您可能会对dobi感兴趣。它是一个专为你所描述的东西而设计的工具。您可以定义用于构建项目的图像,容器,安装等。
您可以像运行make target(dobi <taskname>
)一样运行每个任务。你可以为gcc,protoc,clang等做一个任务。