我正在尝试用docker制作一个构建环境,我想让它自动化。我已经编写了一个自定义的二进制文件来处理构建内容,并且我已经构建了一个安装了the go binary
,maven
和java8 sdk
的图像。
二进制的步骤是:
我在运行容器时将repo url作为参数传递给二进制文件并且它确实构建了。
但问题是我需要这些工件才能运行建立的应用程序。
我知道我可以使用volumes
,但我不想使用它们,因为当构建完成后,卷变为dangle
并且需要删除那些dangling volumes
的工作。
我以为我可以创建一个用于将文件保存到主机的api(这意味着我必须在主机内部运行该api),我的自定义转二进制文件可以将文件发送到api,api将执行保存。
但是当涉及从容器内部调用主机时,我遇到了问题。我收到connection refused to port xx
错误。
有没有更好的方法,或者我应该改变我的方法?
答案 0 :(得分:2)
在accessing-host-machine-as-localhost-from-a-docker-container-thats-also-inside
上找到答案使用--add-host
选项运行容器就是答案。
答案 1 :(得分:0)
虽然你可以使用
docker cp CONTAINER:SRC_PATH DEST_PATH
要从容器中取出文件,我仍然相信使用卷是更好的主意。而不是使用匿名卷使用命名的卷:
docker run -v /local/host/dir:/build/output YOURIMAGE
这允许您从/ local / host / dir
中获取主机上的人工制品https://docs.docker.com/engine/tutorials/dockervolumes/#locate-a-volume