Define and run multi-container applications with Docker
Go to file
Christopher Crone eac315c6ec tests: Fix logout test on Windows
The macOS/Linux output when logging out from a registry that you're not
logged into is different to that of Windows. As the login test doesn't
really test if the registry login works, the test now just checks that
the command is properly parsed.

Signed-off-by: Christopher Crone <christopher.crone@docker.com>
2020-07-17 16:55:12 +02:00
.dependabot Run dependabot daily instead of weekly 2020-06-09 09:45:57 +02:00
.github dependencies: Bump Golang and linter 2020-07-16 13:22:12 +02:00
azure Fix adding a tag to a container group 2020-07-16 10:01:49 +02:00
backend Add license headers 2020-06-18 16:48:03 +02:00
cli cli: Fix logout when specifying a registry 2020-07-17 16:29:12 +02:00
client Add license headers 2020-06-18 16:48:03 +02:00
compose Use compose-go's Project and ProjectOptions 2020-07-02 16:05:45 +02:00
config Add license headers 2020-06-18 16:48:03 +02:00
containers Merge pull request #381 from docker/fix-logs-windows 2020-07-10 13:06:07 +02:00
context Also remove map[string]string for azure login (tenantId param) 2020-07-10 16:55:44 +02:00
docs docs: Add Linux install instructions 2020-06-24 17:51:36 +02:00
errdefs Specific exit code when command fails because azure login is required. Will be used by VSCode Docker integration 2020-07-02 13:52:57 +02:00
example Allow non-interactive exec on ACI 2020-07-09 11:47:22 +02:00
formatter Integrate limits on inspect 2020-06-29 10:32:28 +02:00
local Allow non-interactive exec on ACI 2020-07-09 11:47:22 +02:00
metrics Metrics for azure commands 2020-07-06 11:51:11 +02:00
multierror Add license headers 2020-06-18 16:48:03 +02:00
progress progress: Rename variable to clarify logic 2020-07-06 14:03:48 +02:00
protos Add the platform when returning a container over GRPC 2020-07-08 16:41:25 +02:00
server Allow non-interactive exec on ACI 2020-07-09 11:47:22 +02:00
tests tests: Fix logout test on Windows 2020-07-17 16:55:12 +02:00
.dockerignore Add .git to .dockerignore 2020-05-29 11:29:28 +02:00
.gitattributes Removed test requiring linux containers 2020-06-11 12:58:58 +02:00
.gitignore Remove non-project path 2020-04-24 14:04:27 +02:00
.golangci.yml Extract interface / types to allow unit tests / mock 2020-05-15 10:15:56 +02:00
CHANGELOG.md Changelog updates 2020-06-24 16:49:11 +02:00
Dockerfile dependencies: Bump Golang 2020-07-17 09:37:53 +02:00
Makefile Allow single test run with make 2020-07-08 17:07:32 +02:00
README.md readme: Fix typos 2020-07-16 13:21:08 +02:00
builder.Makefile build: Set version when building with Docker 2020-07-07 15:48:09 +02:00
go.mod Bump github.com/Azure/go-autorest/autorest from 0.11.0 to 0.11.2 2020-07-10 21:24:57 +00:00
go.sum Bump github.com/Azure/go-autorest/autorest from 0.11.0 to 0.11.2 2020-07-10 21:24:57 +00:00

README.md

Docker API

Actions Status

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.1
  • go get golang.org/x/tools/cmd/goimports
  • go 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 com.docker.cli.

  • make moby-cli-link will create a com.docker.cli link in /usr/local/bin if you don't already have it from Docker Desktop

Building the project

$ make

This will make the cli with all backends enabled. make cross on the other hand will cross-compile the cli without the example and local backend. We use make cross to build for our release, hence the exclusion of those backends. You can still cross-compile with all backends enabled: BUILD_TAGS=example,local make cross.

If you make changes to the .proto files, make sure to make protos to generate go code.

Tests

Unit tests

make test

If you need to update a golden file simply do go test ./... -test.update-golden.

e2e tests

make e2e-local

This requires a local Docker Engine running

AZURE_TENANT_ID="xxx" AZURE_CLIENT_ID="yyy" AZURE_CLIENT_SECRET="yyy" make e2e-aci

This requires azure service principal credentials to login to azure. To get the values to be set in local environment variables, you can create a new service principal once you're logged in azure (with docker login azure)

az ad sp create-for-rbac --name 'MyTestServicePrincipal' --sdk-auth

Running the ACI e2e tests will override your local login, the service principal credentials use a token that cannot be refreshed automatically. You might need to run again docker login azure to properly use the command line after running ACI e2e tests.

You can also run a single ACI test from the test suite:

TESTIFY=TestACIRunSingleContainer AZURE_TENANT_ID="xxx" AZURE_CLIENT_ID="yyy" AZURE_CLIENT_SECRET="yyy" make e2e-aci

Release

To create a new release:

  • check that the CI is green on the master commit you want to release
  • simply create a new tag of the form vx.y.z, following existing tags, and push the tag

Pushing the tag will automatically create a new release and make binaries (mac, win, linux) available for download.

Note: Linux binaries are not automatically copied to /docker/aci-integration-beta, if you want to make the linux binary publically available, you'll need to manually create a release in aci-integration-beta and upload the binary. For Desktop integration, you need to make a PR in /docker/pinata and update the cli release number here