From cd14d41324dc6c278e0a1cda53f9cb28306b027e Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Thu, 18 Apr 2024 11:41:25 +0200 Subject: [PATCH 1/4] Remove support for docker compose v1 --- docs/howto/system_benchmarking.md | 1 - docs/howto/system_testing.md | 6 ---- .../_static/docker-agent-base.yml.tmpl | 1 - internal/compose/compose.go | 28 +++++++------------ .../_static/docker-custom-agent-base.yml | 1 - .../_static/terraform_deployer.yml | 1 - .../_static/docker-compose-stack.yml.tmpl | 1 - .../serverless-docker-compose.yml.tmpl | 1 - .../_dev/deploy/docker/docker-compose.yml | 1 - 9 files changed, 10 insertions(+), 31 deletions(-) diff --git a/docs/howto/system_benchmarking.md b/docs/howto/system_benchmarking.md index 815d2198f1..53ff88b84f 100644 --- a/docs/howto/system_benchmarking.md +++ b/docs/howto/system_benchmarking.md @@ -156,7 +156,6 @@ To use environment variables within the Terraform service deployer a `env.yml` f The file should be structured like this: ```yaml -version: '2.3' services: terraform: environment: diff --git a/docs/howto/system_testing.md b/docs/howto/system_testing.md index b3b0715b88..b3c2a93192 100644 --- a/docs/howto/system_testing.md +++ b/docs/howto/system_testing.md @@ -76,7 +76,6 @@ the log files from your package's integration service must be written to a volum the following definition in it's integration service's `docker-compose.yml` file. ```yaml -version: '2.3' services: apache: # Other properties such as build, ports, etc. @@ -95,7 +94,6 @@ For example docker images for MySQL include a volume for the data directory tests are executed, a volume can be added to the `docker-compose.yml`: ```yaml -version: '2.3' services: mysql: # Other properties such as build, ports, etc. @@ -118,7 +116,6 @@ This is useful if you need different capabilities than the provided by the `custom-agent.yml` ```yaml -version: '2.3' services: docker-custom-agent: pid: host @@ -131,7 +128,6 @@ services: This will result in an agent configuration such as: ```yaml -version: '2.3' services: docker-custom-agent: hostname: docker-custom-agent @@ -196,7 +192,6 @@ RUN apt-get update && apt-get -y install \ ``` An example for `custom-agent.yml` in multi-service setup is as below ```yaml -version: '2.3' services: docker-custom-agent: build: @@ -328,7 +323,6 @@ To use environment variables within the Terraform service deployer a `env.yml` f The file should be structured like this: ```yaml -version: '2.3' services: terraform: environment: diff --git a/internal/agentdeployer/_static/docker-agent-base.yml.tmpl b/internal/agentdeployer/_static/docker-agent-base.yml.tmpl index 16171de842..608c2c5f6a 100644 --- a/internal/agentdeployer/_static/docker-agent-base.yml.tmpl +++ b/internal/agentdeployer/_static/docker-agent-base.yml.tmpl @@ -1,4 +1,3 @@ -version: "2.3" services: elastic-agent: hostname: ${AGENT_HOSTNAME} diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 0df4c6228d..891f259cfa 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -47,7 +47,6 @@ type Project struct { name string composeFilePaths []string - dockerComposeV1 bool dockerComposeStandalone bool disableANSI bool disablePullProgressInformation bool @@ -196,23 +195,19 @@ func NewProject(name string, paths ...string) (*Project, error) { c.dockerComposeStandalone = c.dockerComposeStandaloneRequired() } - // Passing a nil context here because we are on initialization. - ver, err := c.dockerComposeVersion(context.Background()) - if err != nil { - logger.Errorf("Unable to determine Docker Compose version: %v. Defaulting to 1.x", err) - c.dockerComposeV1 = true - return &c, nil - } - - versionMessage := fmt.Sprintf("Determined Docker Compose version: %v", ver) - if ver.Major() == 1 { - versionMessage = fmt.Sprintf("%s, the tool will use Compose V1", versionMessage) - c.dockerComposeV1 = true + if logger.IsDebugMode() { + // Passing a nil context here because we are on initialization. + ver, err := c.dockerComposeVersion(context.Background()) + if err != nil { + logger.Errorf("Unable to determine Docker Compose version: %v. Defaulting to 1.x", err) + return &c, nil + } + versionMessage := fmt.Sprintf("Determined Docker Compose version: %v", ver) + logger.Debug(versionMessage) } - logger.Debug(versionMessage) v, ok = os.LookupEnv(DisableVerboseOutputComposeEnv) - if !c.dockerComposeV1 && ok && strings.ToLower(v) != "false" { + if ok && strings.ToLower(v) != "false" { if c.composeVersion.LessThan(semver.MustParse("2.19.0")) { c.disableANSI = true } else { @@ -543,8 +538,5 @@ func (p *Project) dockerComposeVersion(ctx context.Context) (*semver.Version, er // ContainerName method the container name for the service. func (p *Project) ContainerName(serviceName string) string { - if p.dockerComposeV1 { - return fmt.Sprintf("%s_%s_1", p.name, serviceName) - } return fmt.Sprintf("%s-%s-1", p.name, serviceName) } diff --git a/internal/servicedeployer/_static/docker-custom-agent-base.yml b/internal/servicedeployer/_static/docker-custom-agent-base.yml index 84a1fcefac..462813f137 100644 --- a/internal/servicedeployer/_static/docker-custom-agent-base.yml +++ b/internal/servicedeployer/_static/docker-custom-agent-base.yml @@ -1,4 +1,3 @@ -version: "2.3" services: docker-custom-agent: image: "${ELASTIC_AGENT_IMAGE_REF}" diff --git a/internal/servicedeployer/_static/terraform_deployer.yml b/internal/servicedeployer/_static/terraform_deployer.yml index 794446d1ba..5e7173e325 100644 --- a/internal/servicedeployer/_static/terraform_deployer.yml +++ b/internal/servicedeployer/_static/terraform_deployer.yml @@ -1,4 +1,3 @@ -version: '2.3' services: terraform: build: . diff --git a/internal/stack/_static/docker-compose-stack.yml.tmpl b/internal/stack/_static/docker-compose-stack.yml.tmpl index 19f6feda8e..b1bd50dc99 100644 --- a/internal/stack/_static/docker-compose-stack.yml.tmpl +++ b/internal/stack/_static/docker-compose-stack.yml.tmpl @@ -1,7 +1,6 @@ {{ $username := fact "username" }} {{ $password := fact "password" }} {{ $apm_enabled := fact "apm_enabled" }} -version: '2.4' services: elasticsearch: image: "${ELASTICSEARCH_IMAGE_REF}" diff --git a/internal/stack/_static/serverless-docker-compose.yml.tmpl b/internal/stack/_static/serverless-docker-compose.yml.tmpl index 7972b9d71c..a61f718dc8 100644 --- a/internal/stack/_static/serverless-docker-compose.yml.tmpl +++ b/internal/stack/_static/serverless-docker-compose.yml.tmpl @@ -1,4 +1,3 @@ -version: '2.4' services: elastic-agent: image: "{{ fact "agent_image" }}" diff --git a/test/packages/false_positives/cisco_asa/_dev/deploy/docker/docker-compose.yml b/test/packages/false_positives/cisco_asa/_dev/deploy/docker/docker-compose.yml index 569387759f..76d9594a8a 100644 --- a/test/packages/false_positives/cisco_asa/_dev/deploy/docker/docker-compose.yml +++ b/test/packages/false_positives/cisco_asa/_dev/deploy/docker/docker-compose.yml @@ -1,4 +1,3 @@ -version: "2.3" services: cisco-logfile: image: alpine From 99937ecced8a3bc3ab0b5f5651a24135598e79e7 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Thu, 18 Apr 2024 11:48:20 +0200 Subject: [PATCH 2/4] Remove reference to v1 in log message --- internal/compose/compose.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 891f259cfa..8f28c4d8a1 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -199,7 +199,7 @@ func NewProject(name string, paths ...string) (*Project, error) { // Passing a nil context here because we are on initialization. ver, err := c.dockerComposeVersion(context.Background()) if err != nil { - logger.Errorf("Unable to determine Docker Compose version: %v. Defaulting to 1.x", err) + logger.Errorf("Unable to determine Docker Compose version: %v", err) return &c, nil } versionMessage := fmt.Sprintf("Determined Docker Compose version: %v", ver) From a91edf5e71bf1a0cd1d0690c3f3719e9bf31afa4 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Thu, 18 Apr 2024 11:49:48 +0200 Subject: [PATCH 3/4] Leave version check as way to check if the command is available --- internal/compose/compose.go | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 8f28c4d8a1..0b9f8624a1 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -195,16 +195,13 @@ func NewProject(name string, paths ...string) (*Project, error) { c.dockerComposeStandalone = c.dockerComposeStandaloneRequired() } - if logger.IsDebugMode() { - // Passing a nil context here because we are on initialization. - ver, err := c.dockerComposeVersion(context.Background()) - if err != nil { - logger.Errorf("Unable to determine Docker Compose version: %v", err) - return &c, nil - } - versionMessage := fmt.Sprintf("Determined Docker Compose version: %v", ver) - logger.Debug(versionMessage) + // Passing a nil context here because we are on initialization. + ver, err := c.dockerComposeVersion(context.Background()) + if err != nil { + logger.Errorf("Unable to determine Docker Compose version: %v", err) + return &c, nil } + logger.Debugf("Determined Docker Compose version: %v", ver) v, ok = os.LookupEnv(DisableVerboseOutputComposeEnv) if ok && strings.ToLower(v) != "false" { From 84a78ee9cd95bc62dfce7d32c5f6510b1cbaae06 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Thu, 18 Apr 2024 13:07:03 +0200 Subject: [PATCH 4/4] Keep version checks --- internal/compose/compose.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/compose/compose.go b/internal/compose/compose.go index 0b9f8624a1..41f156da21 100644 --- a/internal/compose/compose.go +++ b/internal/compose/compose.go @@ -198,8 +198,10 @@ func NewProject(name string, paths ...string) (*Project, error) { // Passing a nil context here because we are on initialization. ver, err := c.dockerComposeVersion(context.Background()) if err != nil { - logger.Errorf("Unable to determine Docker Compose version: %v", err) - return &c, nil + return nil, fmt.Errorf("unable to determine Docker Compose version: %w", err) + } + if ver.Major() < 2 { + return nil, fmt.Errorf("required Docker Compose v2, found %s", ver.String()) } logger.Debugf("Determined Docker Compose version: %v", ver)