Skip to content

Commit 946bbee

Browse files
committed
rebase master
2 parents 6166380 + bdc0e8f commit 946bbee

35 files changed

+670
-219
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ release: $(BINRELEASE)
5050
s3cmd -P put $(BINRELEASE) s3://get.docker.io/builds/`uname -s`/`uname -m`/docker-$(RELEASE_VERSION).tgz
5151
s3cmd -P put docker-latest.tgz s3://get.docker.io/builds/`uname -s`/`uname -m`/docker-latest.tgz
5252
s3cmd -P put $(SRCRELEASE)/bin/docker s3://get.docker.io/builds/`uname -s`/`uname -m`/docker
53+
echo $(RELEASE_VERSION) > latest ; s3cmd -P put latest s3://get.docker.io/latest ; rm latest
5354

5455
srcrelease: $(SRCRELEASE)
5556
deps: $(DOCKER_DIR)
@@ -65,7 +66,6 @@ $(BINRELEASE): $(SRCRELEASE)
6566
rm -f $(BINRELEASE)
6667
cd $(SRCRELEASE); make; cp -R bin docker-$(RELEASE_VERSION); tar -f ../$(BINRELEASE) -zv -c docker-$(RELEASE_VERSION)
6768
cd $(SRCRELEASE); cp -R bin docker-latest; tar -f ../docker-latest.tgz -zv -c docker-latest
68-
6969
clean:
7070
@rm -rf $(dir $(DOCKER_BIN))
7171
ifeq ($(GOPATH), $(BUILD_DIR))

Vagrantfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ Vagrant::Config.run do |config|
2020
pkg_cmd = "apt-get update -qq; apt-get install -q -y python-software-properties; " \
2121
"add-apt-repository -y ppa:dotcloud/lxc-docker; apt-get update -qq; " \
2222
"apt-get install -q -y lxc-docker; "
23-
# Listen on all interfaces so that the daemon is accessible from the host
24-
pkg_cmd << "sed -i -E 's| /usr/bin/docker -d| /usr/bin/docker -d -H 0.0.0.0|' /etc/init/docker.conf;"
2523
# Add X.org Ubuntu backported 3.8 kernel
2624
pkg_cmd << "add-apt-repository -y ppa:ubuntu-x-swat/r-lts-backport; " \
2725
"apt-get update -qq; apt-get install -q -y linux-image-3.8.0-19-generic; "

api.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func postAuth(srv *Server, version float64, w http.ResponseWriter, r *http.Reque
8787
if err != nil {
8888
return err
8989
}
90-
status, err := auth.Login(authConfig)
90+
status, err := auth.Login(authConfig, srv.HTTPRequestFactory())
9191
if err != nil {
9292
return err
9393
}
@@ -488,7 +488,12 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r
488488
return err
489489
}
490490

491-
if len(config.Dns) == 0 && len(srv.runtime.Dns) == 0 && utils.CheckLocalDns() {
491+
resolvConf, err := utils.GetResolvConf()
492+
if err != nil {
493+
return err
494+
}
495+
496+
if len(config.Dns) == 0 && len(srv.runtime.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
492497
out.Warnings = append(out.Warnings, fmt.Sprintf("Docker detected local DNS server on resolv.conf. Using default external servers: %v", defaultDns))
493498
config.Dns = defaultDns
494499
}
@@ -793,12 +798,8 @@ func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Requ
793798
remoteURL := r.FormValue("remote")
794799
repoName := r.FormValue("t")
795800
rawSuppressOutput := r.FormValue("q")
796-
tag := ""
797-
if strings.Contains(repoName, ":") {
798-
remoteParts := strings.Split(repoName, ":")
799-
tag = remoteParts[1]
800-
repoName = remoteParts[0]
801-
}
801+
rawNoCache := r.FormValue("nocache")
802+
repoName, tag := utils.ParseRepositoryTag(repoName)
802803

803804
var context io.Reader
804805

@@ -844,8 +845,12 @@ func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Requ
844845
if err != nil {
845846
return err
846847
}
848+
noCache, err := getBoolParam(rawNoCache)
849+
if err != nil {
850+
return err
851+
}
847852

848-
b := NewBuildFile(srv, utils.NewWriteFlusher(w), !suppressOutput)
853+
b := NewBuildFile(srv, utils.NewWriteFlusher(w), !suppressOutput, !noCache)
849854
id, err := b.Build(context)
850855
if err != nil {
851856
fmt.Fprintf(w, "Error build: %s\n", err)

archive.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func CopyWithTar(src, dst string) error {
173173
}
174174
// Create dst, copy src's content into it
175175
utils.Debugf("Creating dest directory: %s", dst)
176-
if err := os.MkdirAll(dst, 0700); err != nil && !os.IsExist(err) {
176+
if err := os.MkdirAll(dst, 0755); err != nil && !os.IsExist(err) {
177177
return err
178178
}
179179
utils.Debugf("Calling TarUntar(%s, %s)", src, dst)

auth/auth.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8+
"github.com/dotcloud/docker/utils"
89
"io/ioutil"
910
"net/http"
1011
"os"
@@ -140,7 +141,7 @@ func SaveConfig(configFile *ConfigFile) error {
140141
}
141142

142143
// try to register/login to the registry server
143-
func Login(authConfig *AuthConfig) (string, error) {
144+
func Login(authConfig *AuthConfig, factory *utils.HTTPRequestFactory) (string, error) {
144145
client := &http.Client{}
145146
reqStatusCode := 0
146147
var status string
@@ -171,7 +172,7 @@ func Login(authConfig *AuthConfig) (string, error) {
171172
"Please check your e-mail for a confirmation link.")
172173
} else if reqStatusCode == 400 {
173174
if string(reqBody) == "\"Username or email already exists\"" {
174-
req, err := http.NewRequest("GET", IndexServerAddress()+"users/", nil)
175+
req, err := factory.NewRequest("GET", IndexServerAddress()+"users/", nil)
175176
req.SetBasicAuth(authConfig.Username, authConfig.Password)
176177
resp, err := client.Do(req)
177178
if err != nil {

auth/auth_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestLogin(t *testing.T) {
3333
os.Setenv("DOCKER_INDEX_URL", "https://indexstaging-docker.dotcloud.com")
3434
defer os.Setenv("DOCKER_INDEX_URL", "")
3535
authConfig := &AuthConfig{Username: "unittester", Password: "surlautrerivejetattendrai", Email: "noise+unittester@dotcloud.com"}
36-
status, err := Login(authConfig)
36+
status, err := Login(authConfig, nil)
3737
if err != nil {
3838
t.Fatal(err)
3939
}
@@ -53,7 +53,7 @@ func TestCreateAccount(t *testing.T) {
5353
token := hex.EncodeToString(tokenBuffer)[:12]
5454
username := "ut" + token
5555
authConfig := &AuthConfig{Username: username, Password: "test42", Email: "docker-ut+" + token + "@example.com"}
56-
status, err := Login(authConfig)
56+
status, err := Login(authConfig, nil)
5757
if err != nil {
5858
t.Fatal(err)
5959
}
@@ -63,7 +63,7 @@ func TestCreateAccount(t *testing.T) {
6363
t.Fatalf("Expected status: \"%s\", found \"%s\" instead.", expectedStatus, status)
6464
}
6565

66-
status, err = Login(authConfig)
66+
status, err = Login(authConfig, nil)
6767
if err == nil {
6868
t.Fatalf("Expected error but found nil instead")
6969
}

builder.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ func (builder *Builder) Create(config *Config) (*Container, error) {
3838
MergeConfig(config, img.Config)
3939
}
4040

41-
if config.Cmd == nil || len(config.Cmd) == 0 {
41+
if len(config.Entrypoint) != 0 && config.Cmd == nil {
42+
config.Cmd = []string{}
43+
} else if config.Cmd == nil || len(config.Cmd) == 0 {
4244
return nil, fmt.Errorf("No command specified")
4345
}
4446

@@ -80,7 +82,12 @@ func (builder *Builder) Create(config *Config) (*Container, error) {
8082
return nil, err
8183
}
8284

83-
if len(config.Dns) == 0 && len(builder.runtime.Dns) == 0 && utils.CheckLocalDns() {
85+
resolvConf, err := utils.GetResolvConf()
86+
if err != nil {
87+
return nil, err
88+
}
89+
90+
if len(config.Dns) == 0 && len(builder.runtime.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
8491
//"WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: %v", defaultDns
8592
builder.runtime.Dns = defaultDns
8693
}

buildfile.go

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ type buildFile struct {
2626
builder *Builder
2727
srv *Server
2828

29-
image string
30-
maintainer string
31-
config *Config
32-
context string
33-
verbose bool
29+
image string
30+
maintainer string
31+
config *Config
32+
context string
33+
verbose bool
34+
utilizeCache bool
3435

3536
tmpContainers map[string]struct{}
3637
tmpImages map[string]struct{}
@@ -92,17 +93,21 @@ func (b *buildFile) CmdRun(args string) error {
9293
b.config.Cmd = nil
9394
MergeConfig(b.config, config)
9495

96+
defer func(cmd []string) { b.config.Cmd = cmd }(cmd)
97+
9598
utils.Debugf("Command to be executed: %v", b.config.Cmd)
9699

97-
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
98-
return err
99-
} else if cache != nil {
100-
fmt.Fprintf(b.out, " ---> Using cache\n")
101-
utils.Debugf("[BUILDER] Use cached version")
102-
b.image = cache.ID
103-
return nil
104-
} else {
105-
utils.Debugf("[BUILDER] Cache miss")
100+
if b.utilizeCache {
101+
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
102+
return err
103+
} else if cache != nil {
104+
fmt.Fprintf(b.out, " ---> Using cache\n")
105+
utils.Debugf("[BUILDER] Use cached version")
106+
b.image = cache.ID
107+
return nil
108+
} else {
109+
utils.Debugf("[BUILDER] Cache miss")
110+
}
106111
}
107112

108113
cid, err := b.run()
@@ -112,7 +117,7 @@ func (b *buildFile) CmdRun(args string) error {
112117
if err := b.commit(cid, cmd, "run"); err != nil {
113118
return err
114119
}
115-
b.config.Cmd = cmd
120+
116121
return nil
117122
}
118123

@@ -397,16 +402,19 @@ func (b *buildFile) commit(id string, autoCmd []string, comment string) error {
397402
b.config.Cmd = []string{"/bin/sh", "-c", "#(nop) " + comment}
398403
defer func(cmd []string) { b.config.Cmd = cmd }(cmd)
399404

400-
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
401-
return err
402-
} else if cache != nil {
403-
fmt.Fprintf(b.out, " ---> Using cache\n")
404-
utils.Debugf("[BUILDER] Use cached version")
405-
b.image = cache.ID
406-
return nil
407-
} else {
408-
utils.Debugf("[BUILDER] Cache miss")
405+
if b.utilizeCache {
406+
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
407+
return err
408+
} else if cache != nil {
409+
fmt.Fprintf(b.out, " ---> Using cache\n")
410+
utils.Debugf("[BUILDER] Use cached version")
411+
b.image = cache.ID
412+
return nil
413+
} else {
414+
utils.Debugf("[BUILDER] Cache miss")
415+
}
409416
}
417+
410418
container, err := b.builder.Create(b.config)
411419
if err != nil {
412420
return err
@@ -500,7 +508,7 @@ func (b *buildFile) Build(context io.Reader) (string, error) {
500508
return "", fmt.Errorf("An error occured during the build\n")
501509
}
502510

503-
func NewBuildFile(srv *Server, out io.Writer, verbose bool) BuildFile {
511+
func NewBuildFile(srv *Server, out io.Writer, verbose, utilizeCache bool) BuildFile {
504512
return &buildFile{
505513
builder: NewBuilder(srv.runtime),
506514
runtime: srv.runtime,
@@ -510,5 +518,6 @@ func NewBuildFile(srv *Server, out io.Writer, verbose bool) BuildFile {
510518
tmpContainers: make(map[string]struct{}),
511519
tmpImages: make(map[string]struct{}),
512520
verbose: verbose,
521+
utilizeCache: utilizeCache,
513522
}
514523
}

0 commit comments

Comments
 (0)