2016-12-06 103 views
0

有没有人使用以下命令成功构建图像?使用dockerfile构建图像

curl -v -X POST \ 
-H "Content-Type:application/tar" \ 
http://52.212.221.156:2375/build?t=samplerepo&dockerfile="C:\Dockerfile.tar.gz" 

即使文件在指定的位置,我收到以下错误

{"message":"Cannot locate specified Dockerfile: Dockerfile"} 

或者如果在所有使用remote参数有人已经做到了,请大家帮忙

回答

1

首先,参考泊坞窗API文档,并经过所有的查询参数https://docs.docker.com/engine/api/v1.25/#operation/ImageBuild

有使用dockerfile

  1. 使用远程URL,其中有你的dockerfile tar格式

    curl -X POST "http://localhost:5000/build?remote=https://raw.githubusercontent.com/abha10/FirstGitProj/master/Dockerfile.tar"

  2. 使用远程URL以及dockerfile建立形象三通上下文路径

    curl -X POST "http://localhost:5000/build?dockerfile=Tomcat/config/Dockerfile&remote=https://raw.githubusercontent.com/abha10/FirstGitProj/master/Tomcat.tar"

  3. 以下是他们的官方文档不可用,但工作正常,如果你有你的dockerfile本地存在。

    curl -X POST -H "Content-Type:application/tar" --data-binary '@Dockerfile.tar.gz' "http://localhost:5000/build?tag=tomcat"

1

查询参数dockerfile应该在构建上下文中指向Dockerfile,例如,在您要发布的tar归档文件中。

假设在归档

payload.tar.gz 
    -- config 
     -- Dockerfile 
    -- src 
    -- temp 

Then your query parameter "dockerfile" shall hold config/Dockerfile. 

确保您与请求一起发送有效载荷焦油下面的结构。

下面的命令通过泊坞远程API创建对当地环境的图像

curl -v POST -H "Content-Type: application/tar" --data-binary @Dockerfile.tar.gz --unix-socket /var/run/docker.sock http:/build?t=sample 
+0

在*用途:\t搬运工构建[OPTIONS] PATH *,PATH是指构建上下文。当我们使用* docker build -t 。*时,当前目录是构建上下文。在Remote API的情况下,我们将该构建上下文作为远程运行的tar归档文件发送。因此,您的docker文件必须位于该归档的根目录下,并且该tar归档文件需要作为该请求的一部分发送。如果Dockerfile不在归档的根目录下并放在归档目录下,则可以通过查询参数“dockerfile”指定它。 – Yuva

+0

好的,所以这个curl命令我试过'curl -v -X POST -H“Content-Type:applictaion/tar”http://52.210.66.125:2375/build?t=samplerepo&dockerfile="C:/payload .tar“' 而文件夹结构是'payload> Dockerfile'。仍然无法使其工作。 – Abhaya

+0

'curl -v POST -H“Content-Type:application/tar”--data-binary @ archive.tar.gz http://52.210.66.125:2375/build?t = samplerepo' – Yuva