{"action":"created","issue":{"url":"https://api.github.com/repos/openshift/origin/issues/7823","repository_url":"https://api.github.com/repos/openshift/origin","labels_url":"https://api.github.com/repos/openshift/origin/issues/7823/labels{/name}","comments_url":"https://api.github.com/repos/openshift/origin/issues/7823/comments","events_url":"https://api.github.com/repos/openshift/origin/issues/7823/events","html_url":"https://github.com/openshift/origin/pull/7823","id":138890744,"number":7823,"title":"WIP - Flexible dockerfile builder that uses client calls","user":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars.githubusercontent.com/u/1163175?v=3","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/openshift/origin/labels/area/performance","name":"area/performance","color":"006b75"},{"url":"https://api.github.com/repos/openshift/origin/labels/component/build","name":"component/build","color":"0052cc"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/openshift/origin/milestones/13","html_url":"https://github.com/openshift/origin/milestones/1.2.x","labels_url":"https://api.github.com/repos/openshift/origin/milestones/13/labels","id":1594965,"number":13,"title":"1.2.x","description":"Features delivered after 1.2.","creator":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars.githubusercontent.com/u/1163175?v=3","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"open_issues":32,"closed_issues":1,"state":"open","created_at":"2016-02-20T19:27:29Z","updated_at":"2016-03-07T05:23:14Z","due_on":"2016-04-22T04:00:00Z","closed_at":null},"comments":2,"created_at":"2016-03-07T05:23:05Z","updated_at":"2016-03-07T10:34:34Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/openshift/origin/pulls/7823","html_url":"https://github.com/openshift/origin/pull/7823","diff_url":"https://github.com/openshift/origin/pull/7823.diff","patch_url":"https://github.com/openshift/origin/pull/7823.patch"},"body":"This commit adds a library for executing Dockerfile builds without a\ndirect dependency on the Docker daemon, and is able to create an entire\nDockerfile into a squashed layer directly. It uses the upload and exec\ncalls for COPY, ADD, and RUN, and reuses the same logic as the existing\nbuilder for transforming environment variables and arguments.\n\nGiven that it avoids the need to commit individual layers, in any outcome\nwhere squash is required or context can't be reused (like cluster builds)\nit will be 2-3x faster on average and use much less CPU and IO. The more\ncomplex a Dockerfile is, the faster this path is.\n\nIn addition, this allows full control over the executing container\nenvironment, which means we have access to bindmount in secrets, mutate\nthe dockerfile, and perform cleanup at the end of the process.\n\n@bparees @mfojtik this is an experimental branch but is fully functional.\nI think this might be an option to the builder \"squash: true\"."},"comment":{"url":"https://api.github.com/repos/openshift/origin/issues/comments/193198240","html_url":"https://github.com/openshift/origin/pull/7823#issuecomment-193198240","issue_url":"https://api.github.com/repos/openshift/origin/issues/7823","id":193198240,"user":{"login":"bparees","id":4974046,"avatar_url":"https://avatars.githubusercontent.com/u/4974046?v=3","gravatar_id":"","url":"https://api.github.com/users/bparees","html_url":"https://github.com/bparees","followers_url":"https://api.github.com/users/bparees/followers","following_url":"https://api.github.com/users/bparees/following{/other_user}","gists_url":"https://api.github.com/users/bparees/gists{/gist_id}","starred_url":"https://api.github.com/users/bparees/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bparees/subscriptions","organizations_url":"https://api.github.com/users/bparees/orgs","repos_url":"https://api.github.com/users/bparees/repos","events_url":"https://api.github.com/users/bparees/events{/privacy}","received_events_url":"https://api.github.com/users/bparees/received_events","type":"User","site_admin":false},"created_at":"2016-03-07T10:34:34Z","updated_at":"2016-03-07T10:34:34Z","body":"I understand the reason for this and i like the value it brings (speed, though speed is debatable since you lose caching, and security), but i'm still terrified of owning our own version of docker build that we have to maintain going forward (even assuming the initial implementation doesn't have any issues).  I feel like it deserves a wider discussion.  I don't suppose there's any chance of something like this being accepted in docker itself?\r\n\r\n"}}