Commit Graph

209 Commits

Author SHA1 Message Date
Guillaume Tardif 0a5328748a When running compose down, remove containers with Force=true in case some container is still up for any reason (happened in some E2E test once)
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2021-01-06 10:07:40 +01:00
Guillaume Tardif df4fed266b
Merge pull request #1095 from docker/push_pull
ignore services without image attribute
2021-01-05 19:13:13 +01:00
Nicolas De Loof 5a455e47c3
ignore services without image attribute
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2021-01-05 09:47:29 +01:00
Ulysses Souza cef7a2d4ce Refactor ProjectName
This separate project name and service name for command `run`

Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
2021-01-04 14:11:54 +00:00
Guillaume Tardif 3714ab7d41 Attaching container logs
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 10:01:08 +01:00
Guillaume Tardif db73c928f3 Ensure image exist for run service
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 10:01:08 +01:00
Guillaume Tardif dc211b178a Fixed race when down with multiple containers for one service
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 10:01:08 +01:00
Guillaume Tardif 32d5644937 Pass reader Writer as options to backend, remove hardcoded os.Stdout
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 10:01:06 +01:00
Guillaume Tardif bad0d41d90 Auto-remove using container config
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 10:00:19 +01:00
Guillaume Tardif d2cfffafb4 Attach to container using compose attach
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 10:00:19 +01:00
Guillaume Tardif 76f36a69c6 Reusing existing Create() and Start() API
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 10:00:18 +01:00
Guillaume Tardif 27dc2e5be1 Reuse Create(Project) and Start(Project)
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 09:59:02 +01:00
Guillaume Tardif 8eb9733914 No need to support service `container_name` in this PR, will do separately, minor cleanup
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 09:59:02 +01:00
Guillaume Tardif d127cac6d4 Ensure images exist before starting progress display for network / volumes, otherwise progress display is all mixed up
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 09:59:02 +01:00
Guillaume Tardif 7bed2343e6 Remove not implemented options
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 09:59:02 +01:00
Guillaume Tardif b289138ca9 No need to filter services again in backend, filter is done by cli command. Added e2e test, labels one-off and slug
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-18 09:59:02 +01:00
aiordache 412385c495 Add `compose run` command
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-12-18 09:58:55 +01:00
Nicolas De Loof e2c55c2122
e2e test for local `Log` command
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-17 11:48:58 +01:00
Nicolas De Loof eda6a59379
introduce options struct in the API
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-17 11:10:57 +01:00
Nicolas De Loof 855a879a6a
Introduce `removeOrphans` to cleanup injected AWS simulation container
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-17 10:46:17 +01:00
Nicolas De Loof 056dfb95bc
allow to collect logs for a subset of project services
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-17 10:32:46 +01:00
Chris Crone 65561c085a deps: Bump docker and buildx vendoring
Signed-off-by: Chris Crone <christopher.crone@docker.com>
2020-12-16 10:57:42 +01:00
Chris Crone 87153b9d25 local.compose.build: Ensure images are exported
If a user has BUILDX_NO_DEFAULT_LOAD=1 set, then the images will
not be stored in the image store unless we explicitly say that they
must be.

Signed-off-by: Chris Crone <christopher.crone@docker.com>
2020-12-11 11:08:49 +01:00
Chris Crone ddaec1a367 compose.build: Wait for progress writer after build
Signed-off-by: Chris Crone <christopher.crone@docker.com>
2020-12-11 10:40:09 +01:00
Chris Crone 6e76aadfd6 deps: Bump buildx and docker vendoring
Signed-off-by: Chris Crone <christopher.crone@docker.com>
2020-12-11 10:40:09 +01:00
Djordje Lukic 72cec58ed1 Check if stdin is nil before closing
getContainerStreams returns a nil stdin if the container is already running

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-12-11 10:08:27 +01:00
Guillaume Tardif cf378834e5 No rebuild on compose up if image already exists by default, added first use of compose pull_policy and `compose up --build` to allow to force rebuild.
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-10 18:38:16 +01:00
Nicolas De Loof 446008a4b6
on ACI container ID is `project_service` and name is `service`
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-09 14:39:10 +01:00
Nicolas De Loof 1f5a77e67c
move test to command-specific test file
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-09 10:33:52 +01:00
Nicolas De Loof 1d859dc807
`Ps` return ContainerSummary, not Services
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-09 10:33:51 +01:00
Guillaume Tardif e4ed2b02d7 Fix container attaching to wrong volume name for compose non-external volumes. Took the opportunity to validate R/O volumes, but not related to this fix
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-08 18:48:18 +01:00
Djordje Lukic 033941d890 compose: Add service labels
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-12-08 16:32:30 +01:00
Nicolas De Loof 1eb40999e2
Split compose.go into command-focussed go files
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-08 11:58:49 +01:00
Djordje Lukic f6c4c4e590 Move compose e2e tests to own folder
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-12-08 11:30:25 +01:00
Guillaume Tardif 8ee2286126
Merge pull request #1021 from gtardif/fix_down_no_containers
Ensure down continues (removes networks) even if containers have been removed already
2020-12-07 17:33:26 +01:00
Guillaume Tardif b987f2eaf8
Merge pull request #1023 from docker/fix-build-target
Pass the target to buildkit
2020-12-07 17:31:20 +01:00
Guillaume Tardif d0728d94f2 Fix compose volume creation and check this in volume e2e test
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-07 16:57:55 +01:00
Djordje Lukic 7d88fc61d3 Pass the target to buildkit
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-12-07 16:47:58 +01:00
Guillaume Tardif fe363fd146 Fix compose volume creation and check this in volume e2e test
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-07 16:42:43 +01:00
Guillaume Tardif 2657f5804e Ensure down continues (removes networks) even if containers have been removed already. Avoid returning nil error and nil project in `projectFromContainerLabels`
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-07 15:48:57 +01:00
Nicolas De loof 576aa46d21
Merge pull request #1015 from docker/logConsumer
Revisit logs/up API to pass a LogConsumer vs io.Writer
2020-12-07 14:57:43 +01:00
Nicolas De Loof ca123e08eb
Revisit logs/up API to pass a LogConsumer vs io.Writer
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-07 14:47:44 +01:00
Guillaume Tardif fea0cf8c82 Fix linter
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-07 14:46:31 +01:00
Guillaume Tardif 6fc8eefb1b Remove build flag for local backend
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-07 14:41:27 +01:00
Guillaume Tardif ec5afcfd4d `compose up` and other compose commands running on “Moby” context type.
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-07 14:41:27 +01:00
Nicolas De Loof 26fe75a7e3
Remove stopped containers on `down`
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-07 11:39:21 +01:00
Guillaume Tardif ff1808644c Remove flakyness in compose e2e test : can’t count networks as we have several compose stacks start in //
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-07 09:31:32 +01:00
Guillaume Tardif d0b840bcd1 Fix compose up build when no image name in compose file.
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-04 18:19:34 +01:00
Guillaume Tardif aacd881358 Add -d flag in e2e tests now that `docker compose up` attaches to logs by default
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-04 15:19:12 +01:00
Guillaume Tardif 0b2eaede8c Adding unit test for bind mount creation
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-04 13:49:43 +01:00
Guillaume Tardif 814536c0bd Fixing bind mount with relative path when specifying relative working dir. Added first local compose volume e2e test
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-04 13:49:43 +01:00
Djordje Lukic fcddb77b48 Give progress its own context
The build and progress can't share the same context, the progress context
needs to live longer for the progress to be able to read all the messages
from build.

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-12-04 13:05:26 +01:00
Nicolas De loof 6830ca1919
Merge pull request #1006 from gtardif/compose_fix_down_deps
Fix service initial status in graph, in order to fix compose down duplicate removal of container
2020-12-04 11:03:42 +01:00
Nicolas De Loof 136d09e1ac
split `Up` into `Create`+`Start` so logs don't collide with progress
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-04 08:16:50 +01:00
Nicolas De Loof 39e4107e12
attach to log stream by default on `up`
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-03 16:51:00 +01:00
Djordje Lukic 2f09b634cc Implement `docker compose pull`
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-12-03 16:14:38 +01:00
Guillaume Tardif 56511a4a3a renaming
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-03 15:47:19 +01:00
Guillaume Tardif 44b4bc01af In `compose down` progress display: prefix container names with “Container”, same as Services, Networks, homogeneous with `compose up`
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-03 15:46:37 +01:00
Guillaume Tardif 9d918a8ceb Fix service initial status in graph, in order to fix compose down duplicate removal of container (example : awesome-compose ELK stack)
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-03 15:27:35 +01:00
Guillaume Tardif e469b40e28 Remove duplicate ensureImagesExist()
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-02 13:51:56 +01:00
Ulysses Souza 7e4cfc0e3b Add order to down command
Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
2020-12-02 13:51:11 +01:00
Guillaume Tardif 4270f383a7
Merge pull request #988 from docker/feat-platform
Add platform when running containers
2020-12-02 13:24:07 +01:00
Guillaume Tardif 91083bc42c
Merge pull request #1001 from gtardif/compose_build_img_name
If compose file has a build section and no image name, build image with the right derived image tag
2020-12-02 13:16:03 +01:00
Guillaume Tardif 7b1a602fd4 If compose file has a build section and no image name, build image with the right derived image name (project_service), like docker-compose.
See awesome_compose/react-express-mongodb example

Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-02 12:05:59 +01:00
Guillaume Tardif 5258e3d56e Add compose build flags for file and working dir
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
2020-12-02 10:35:28 +01:00
Nicolas De loof 6bf76eebb1
Merge pull request #991 from gtardif/compose_network_error
Compose network error
2020-12-01 18:31:43 +01:00
Nicolas De Loof a35147bc63
Detect push failure and break
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-01 16:26:01 +01:00
Nicolas De Loof 52574046f0
introduce `compose push` command
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-12-01 14:55:52 +01:00
Guillame Tardif b1970f618c Container networks: prefix network name only for internal networks or when name set (different from yaml key). No need to prefix again when connecting containers
Signed-off-by: Guillame Tardif <guillaume.tardif@gmail.com>
2020-12-01 10:03:18 +01:00
Guillame Tardif d24ffd97a0 Local compose error when external network not available
Signed-off-by: Guillame Tardif <guillaume.tardif@gmail.com>
2020-11-30 14:49:35 +01:00
Nicolas De Loof 5952183eca
introduce `compose build` command
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-30 12:43:38 +01:00
Djordje Lukic 1148ed8837 Add platform when running containers
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-11-30 11:51:46 +01:00
Guillame Tardif 4d1f265c62 Adding error progress indication when errors
Signed-off-by: Guillame Tardif <guillaume.tardif@gmail.com>
2020-11-27 18:18:14 +01:00
Guillame Tardif 7ddd8e5e97 Helper methods to create progress events, more homogeneous display for “creating”, “Created”, …
Signed-off-by: Guillame Tardif <guillaume.tardif@gmail.com>
2020-11-27 17:55:36 +01:00
Guillame Tardif 8b60c76684 Remove project network on compose down
Signed-off-by: Guillame Tardif <guillaume.tardif@gmail.com>
2020-11-27 17:42:29 +01:00
Guillaume Tardif 9b140930a7
Merge pull request #979 from docker/console
Don't start buildx' build with empty opts
2020-11-27 14:54:39 +01:00
Nicolas De Loof a542b5d37f
Don't start buildx' build with empty opts
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-27 14:18:06 +01:00
Guillame Tardif bc9099de9b Ensure images are pulled/build with build first, before creating networks / volumes and starting containers.
Will also avoid mixing build output and compose-cli progress display

Signed-off-by: Guillame Tardif <guillaume.tardif@gmail.com>
2020-11-27 13:52:58 +01:00
Nicolas De Loof b42b61e307
rename method for clarity
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-27 12:05:57 +01:00
Nicolas De Loof 3ff6923d2e
align coding-style with network labels
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-27 10:51:58 +01:00
Nicolas De Loof 49e653f142
unused context parameter
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-27 10:29:08 +01:00
Nicolas De Loof f65a0d3720
Create volume with labels
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-27 10:21:36 +01:00
Nicolas De Loof 646aca82d9
composeService to rely on apiClient
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-27 10:21:36 +01:00
Guillaume Tardif de3b6cb450 Add compose labels for composefiles
Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
2020-11-26 17:13:24 +00:00
Nicolas De loof f7905efc36
Merge pull request #960 from docker/build 2020-11-26 17:58:22 +01:00
Guillaume Tardif e441fbba5a Add compose labels for network
Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
2020-11-26 15:45:25 +01:00
Nicolas De Loof 0f4bcb9f17
Build and pull in parallel with BuildKit
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-26 14:11:40 +01:00
Nicolas De Loof a0b609a5dd
implement service image build by BuildKit
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-26 14:07:53 +01:00
Guillaume Tardif 24328c4620 Add container labels to improve compatibility with docker-compose
Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
2020-11-25 17:53:12 +01:00
Ulysses Souza 794a182bdd Avoid port collision with compose up test
Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
2020-11-24 11:10:17 -03:00
Ulysses Souza 8f8b97d031 Fix linter issues when running `make lint`
Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
2020-11-23 17:05:40 -03:00
Djordje Lukic 5ffdaa5cca Use json progress message
It contains the same output that `docker pull` shows

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-11-23 10:00:13 +01:00
Djordje Lukic be40bdb032 Remove useless Done in the progress writer
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-11-22 17:30:28 +01:00
Djordje Lukic 5cf5410bc8 Detect cycles
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-11-21 23:58:12 +01:00
Djordje Lukic 1f43b83409 Use a dependency graph to start services
The algorithm is like so:
* get all the leaves of the graph, these are all the service that don't have any dependency
* once a service is started we take the list of its parents (dependents)
* if all the dependencies of each of those dependents are started then we can start it as well
* if not then we continue to the next dependent

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2020-11-21 22:30:32 +01:00
Guillaume Tardif aa534979bc First local compose e2e tests
Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
2020-11-20 18:06:11 +01:00
Nicolas De Loof 98cc5cc1eb
Fix processing dependency graph only onces per node
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-20 17:56:27 +01:00
Nicolas De loof b3f406f410
Merge pull request #924 from docker/dependecy_order 2020-11-20 15:45:15 +01:00
Nicolas De Loof eeb09d9e80
apply linter recommendations
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-19 17:35:34 +01:00
Nicolas De Loof e7284e76e9
Process services in dependency order as a graph
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2020-11-19 17:31:58 +01:00