Define and run multi-container applications with Docker
Go to file
Guillaume Tardif fc8132167e Update doc for release 2020-07-06 09:40:35 +02:00
.dependabot Run dependabot daily instead of weekly 2020-06-09 09:45:57 +02:00
.github Indent master-ci.yml 2020-07-01 15:15:44 +02:00
azure Better error message when trying to remove a container from a compose application 2020-07-03 15:58:17 +02:00
backend Add license headers 2020-06-18 16:48:03 +02:00
cli Merge pull request #325 from docker/error_status_context_needs_login 2020-07-02 17:02:57 +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 Integrate limits on inspect 2020-06-29 10:32:28 +02:00
context Delegate to Moby CLI, to allow executing ecs CLI plugin if user has switched to the AWS context (created by the plugin) 2020-06-25 11:49:28 +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 Specific error message when user tries to remove one container from an ACI compose application, mentioning the name of the compose application and that user should use compose down 2020-07-03 10:03:46 +02:00
formatter Integrate limits on inspect 2020-06-29 10:32:28 +02:00
local Run containers and attach to logs by default, detach with -d option 2020-07-02 16:45:04 +02:00
metrics Merge pull request #335 from docker/fix-metrics-goroutine 2020-07-03 15:01:14 +02:00
multierror Add license headers 2020-06-18 16:48:03 +02:00
progress Merge pull request #243 from docker/chore-license 2020-06-19 01:16:21 -07:00
protos Integrate limits on inspect 2020-06-29 10:32:28 +02:00
server Use logrus for logging, not containerd's log 2020-06-29 15:02:05 +02:00
tests ACI : allow `docker compose down —project-name xxx` without requiring the compose file 2020-07-03 10:24:06 +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 Add license headers 2020-06-18 16:48:03 +02:00
Makefile Add license headers 2020-06-18 16:48:03 +02:00
README.md Update doc for release 2020-07-06 09:40:35 +02:00
builder.Makefile Set LD_FLAG version from git tag. Displayed version will be (default behaviour of git describe —tags): 2020-06-25 13:50:16 +02:00
go.mod Merge pull request #327 from docker/compose-go 2020-07-02 16:43:34 +02:00
go.sum Merge pull request #327 from docker/compose-go 2020-07-02 16:43:34 +02: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 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.

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 th form vx.y.z, following existing tags, and push the tag

Pushing the tag will automatically ceate 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