This was encountered by @lorenrh with stack :
```
docker login azure
panic: runtime error: index out of range [0] with length 0
goroutine 1 [running]:
github.com/docker/api/azure/login.AzureLoginService.Login(0xc0004cc2a0, 0x2d, 0xe8b8a0, 0x1476830, 0xe8e4e0, 0xc000498ff0, 0x0, 0x0)
github.com/docker/api/azure/login/login.go:130 +0x1057
github.com/docker/api/azure.(*aciCloudService).Login(0xc0004888c0, 0xe8e4e0, 0xc000498ff0, 0x0, 0xe82720, 0xc0004888c0)
github.com/docker/api/azure/backend.go:283 +0x64
github.com/docker/api/cli/cmd/login.cloudLogin(0xc0004eb600, 0xd422a4, 0x3, 0x1, 0xffffffffffffffff)
github.com/docker/api/cli/cmd/login/login.go:53 +0xae
github.com/docker/api/cli/cmd/login.runLogin(0xc0004eb600, 0xc00049c5f0, 0x1, 0x1, 0x0, 0x0)
github.com/docker/api/cli/cmd/login/login.go:39 +0x15e
github.com/spf13/cobra.(*Command).execute(0xc0004eb600, 0xc00049c5d0, 0x1, 0x1, 0xc0004eb600, 0xc00049c5d0)
github.com/spf13/cobra@v1.0.0/command.go:842 +0x45a
github.com/spf13/cobra.(*Command).ExecuteC(0xc0004a8580, 0xc000498fc0, 0xc41160, 0x1476830)
github.com/spf13/cobra@v1.0.0/command.go:950 +0x350
github.com/spf13/cobra.(*Command).Execute(...)
github.com/spf13/cobra@v1.0.0/command.go:887
github.com/spf13/cobra.(*Command).ExecuteContext(...)
github.com/spf13/cobra@v1.0.0/command.go:880
main.main()
github.com/docker/api/cli/main.go:167 +0x68f
```
|
||
|---|---|---|
| .dependabot | ||
| .github | ||
| azure | ||
| backend | ||
| cli | ||
| client | ||
| compose | ||
| config | ||
| containers | ||
| context | ||
| docs/cli | ||
| errdefs | ||
| example | ||
| moby | ||
| multierror | ||
| protos | ||
| server | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.yml | ||
| Dockerfile | ||
| Makefile | ||
| README.md | ||
| builder.Makefile | ||
| go.mod | ||
| go.sum | ||
README.md
Docker API
Dev Setup
The recommended way is to use the main Makefile that runs everything inside a container.
If you don't have or want to use Docker for building you need to make sure you have all the needed tools installed locally:
- go 1.14
- protoc
go get github.com/golang/protobuf/protoc-gen-go@v1.4.1go get golang.org/x/tools/cmd/goimportsgo get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.26.0
And then you can call the same make targets but you need to pass it the builder.Makefile (make -f builder.Makefile).
The new CLI delegates to the classic docker for default contexts ; delegation is done to docker-classic.
make classic-linkwill create adocker-classiclink in/usr/local/binif you don't already have it from Docker Desktop
Building the project
$ make
If you make changes to the .proto files, make sure to make protos to generate go code.
Tests
To run unit tests:
make test
If you need to update a golden file simply do go test ./... -test.update-golden.