From f25bb2bb1f83e80dc005a99b1d796f8bb91d9690 Mon Sep 17 00:00:00 2001 From: lithrel Date: Thu, 8 Jun 2023 14:59:22 +0300 Subject: [PATCH] wp-env: Migrate to Compose V2 Update docker-compose package to 0.24.1 Use v2 as dockerCompose command Fixes https://github.com/WordPress/gutenberg/issues/51249 --- package-lock.json | 54 +++++++++++++++++++--------- packages/env/CHANGELOG.md | 4 +++ packages/env/lib/cli.js | 4 +-- packages/env/lib/commands/clean.js | 2 +- packages/env/lib/commands/destroy.js | 2 +- packages/env/lib/commands/logs.js | 2 +- packages/env/lib/commands/run.js | 3 +- packages/env/lib/commands/start.js | 2 +- packages/env/lib/commands/stop.js | 2 +- packages/env/lib/test/cli.js | 2 +- packages/env/lib/wordpress.js | 2 +- packages/env/package.json | 2 +- test/unit/jest.config.js | 4 +++ 13 files changed, 57 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80a3f384e808e..dfd755f2884cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25688,15 +25688,6 @@ "node": ">=6" } }, - "node_modules/docker-compose": { - "version": "0.22.2", - "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.22.2.tgz", - "integrity": "sha512-iXWb5+LiYmylIMFXvGTYsjI1F+Xyx78Jm/uj1dxwwZLbWkUdH6yOXY5Nr3RjbYX15EgbGJCq78d29CmWQQQMPg==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -55484,7 +55475,7 @@ "dependencies": { "chalk": "^4.0.0", "copy-dir": "^1.3.0", - "docker-compose": "^0.22.2", + "docker-compose": "^0.24.3", "extract-zip": "^1.6.7", "got": "^11.8.5", "inquirer": "^7.1.0", @@ -55513,6 +55504,18 @@ "node": ">=12" } }, + "packages/env/node_modules/docker-compose": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.2.tgz", + "integrity": "sha512-2/WLvA7UZ6A2LDLQrYW0idKipmNBWhtfvrn2yzjC5PnHDzuFVj1zAZN6MJxVMKP0zZH8uzAK6OwVZYHGuyCmTw==", + "dev": true, + "dependencies": { + "yaml": "^2.2.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "packages/env/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -55565,6 +55568,15 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, + "packages/env/node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "packages/env/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -70702,7 +70714,7 @@ "requires": { "chalk": "^4.0.0", "copy-dir": "^1.3.0", - "docker-compose": "^0.22.2", + "docker-compose": "^0.24.3", "extract-zip": "^1.6.7", "got": "^11.8.5", "inquirer": "^7.1.0", @@ -70725,6 +70737,14 @@ "wrap-ansi": "^7.0.0" } }, + "docker-compose": { + "version": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.2.tgz", + "integrity": "sha512-2/WLvA7UZ6A2LDLQrYW0idKipmNBWhtfvrn2yzjC5PnHDzuFVj1zAZN6MJxVMKP0zZH8uzAK6OwVZYHGuyCmTw==", + "dev": true, + "requires": { + "yaml": "^2.2.2" + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -70765,6 +70785,12 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, + "yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "dev": true + }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -76981,12 +77007,6 @@ "@leichtgewicht/ip-codec": "^2.0.1" } }, - "docker-compose": { - "version": "0.22.2", - "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.22.2.tgz", - "integrity": "sha512-iXWb5+LiYmylIMFXvGTYsjI1F+Xyx78Jm/uj1dxwwZLbWkUdH6yOXY5Nr3RjbYX15EgbGJCq78d29CmWQQQMPg==", - "dev": true - }, "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", diff --git a/packages/env/CHANGELOG.md b/packages/env/CHANGELOG.md index aeae4f73e766f..8b39bea46f785 100644 --- a/packages/env/CHANGELOG.md +++ b/packages/env/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Breaking Change + +- Update Docker usage to `docker compose` V2 following [deprecation](https://docs.docker.com/compose/migrate/) of `docker-compose` V1. + ## 8.13.0 (2023-11-29) ## 8.12.0 (2023-11-16) diff --git a/packages/env/lib/cli.js b/packages/env/lib/cli.js index 1788315b60b9d..896df6cd59fed 100644 --- a/packages/env/lib/cli.js +++ b/packages/env/lib/cli.js @@ -58,10 +58,10 @@ const withSpinner = 'err' in error && 'out' in error ) { - // Error is a docker-compose error. That means something docker-related failed. + // Error is a docker compose error. That means something docker-related failed. // https://github.com/PDMLab/docker-compose/blob/HEAD/src/index.ts spinner.fail( - 'Error while running docker-compose command.' + 'Error while running docker compose command.' ); if ( error.out ) { process.stdout.write( error.out ); diff --git a/packages/env/lib/commands/clean.js b/packages/env/lib/commands/clean.js index e3977b3b63b8c..587080eee99db 100644 --- a/packages/env/lib/commands/clean.js +++ b/packages/env/lib/commands/clean.js @@ -2,7 +2,7 @@ /** * External dependencies */ -const dockerCompose = require( 'docker-compose' ); +const { v2: dockerCompose } = require( 'docker-compose' ); /** * Internal dependencies diff --git a/packages/env/lib/commands/destroy.js b/packages/env/lib/commands/destroy.js index fbbff0c8a2898..20f76250271a9 100644 --- a/packages/env/lib/commands/destroy.js +++ b/packages/env/lib/commands/destroy.js @@ -2,7 +2,7 @@ /** * External dependencies */ -const dockerCompose = require( 'docker-compose' ); +const { v2: dockerCompose } = require( 'docker-compose' ); const util = require( 'util' ); const fs = require( 'fs' ).promises; const path = require( 'path' ); diff --git a/packages/env/lib/commands/logs.js b/packages/env/lib/commands/logs.js index 3a749b20b3dab..b581835b2f994 100644 --- a/packages/env/lib/commands/logs.js +++ b/packages/env/lib/commands/logs.js @@ -2,7 +2,7 @@ /** * External dependencies */ -const dockerCompose = require( 'docker-compose' ); +const { v2: dockerCompose } = require( 'docker-compose' ); /** * Internal dependencies diff --git a/packages/env/lib/commands/run.js b/packages/env/lib/commands/run.js index def29b6523139..95f0b4459f8cf 100644 --- a/packages/env/lib/commands/run.js +++ b/packages/env/lib/commands/run.js @@ -78,6 +78,7 @@ function spawnCommandDirectly( config, container, command, envCwd, spinner ) { ); const composeCommand = [ + 'compose', '-f', config.dockerComposeConfigPath, 'exec', @@ -98,7 +99,7 @@ function spawnCommandDirectly( config, container, command, envCwd, spinner ) { // cannot use it to spawn an interactive command. Thus, we run docker- // compose on the CLI directly. const childProc = spawn( - 'docker-compose', + 'docker', composeCommand, { stdio: 'inherit' }, spinner diff --git a/packages/env/lib/commands/start.js b/packages/env/lib/commands/start.js index 2765e9c4e3198..4203ac7463228 100644 --- a/packages/env/lib/commands/start.js +++ b/packages/env/lib/commands/start.js @@ -2,7 +2,7 @@ /** * External dependencies */ -const dockerCompose = require( 'docker-compose' ); +const { v2: dockerCompose } = require( 'docker-compose' ); const util = require( 'util' ); const path = require( 'path' ); const fs = require( 'fs' ).promises; diff --git a/packages/env/lib/commands/stop.js b/packages/env/lib/commands/stop.js index 3700c3f2aa581..5393ef8c6a000 100644 --- a/packages/env/lib/commands/stop.js +++ b/packages/env/lib/commands/stop.js @@ -2,7 +2,7 @@ /** * External dependencies */ -const dockerCompose = require( 'docker-compose' ); +const { v2: dockerCompose } = require( 'docker-compose' ); /** * Internal dependencies diff --git a/packages/env/lib/test/cli.js b/packages/env/lib/test/cli.js index ba850e3259f4c..542aea598a42f 100644 --- a/packages/env/lib/test/cli.js +++ b/packages/env/lib/test/cli.js @@ -138,7 +138,7 @@ describe( 'env cli', () => { await env.start.mock.results[ 0 ].value.catch( () => {} ); expect( spinner.fail ).toHaveBeenCalledWith( - 'Error while running docker-compose command.' + 'Error while running docker compose command.' ); expect( process.stderr.write ).toHaveBeenCalledWith( 'failure error' ); expect( process.exit ).toHaveBeenCalledWith( 1 ); diff --git a/packages/env/lib/wordpress.js b/packages/env/lib/wordpress.js index e8c20aa70f215..423547fad688b 100644 --- a/packages/env/lib/wordpress.js +++ b/packages/env/lib/wordpress.js @@ -2,7 +2,7 @@ /** * External dependencies */ -const dockerCompose = require( 'docker-compose' ); +const { v2: dockerCompose } = require( 'docker-compose' ); const util = require( 'util' ); const fs = require( 'fs' ).promises; const path = require( 'path' ); diff --git a/packages/env/package.json b/packages/env/package.json index 94ee81a31d59b..cb362b6c9f3d1 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -34,7 +34,7 @@ "dependencies": { "chalk": "^4.0.0", "copy-dir": "^1.3.0", - "docker-compose": "^0.22.2", + "docker-compose": "^0.24.3", "extract-zip": "^1.6.7", "got": "^11.8.5", "inquirer": "^7.1.0", diff --git a/test/unit/jest.config.js b/test/unit/jest.config.js index 9d19a5c9feb2f..38459b631fea4 100644 --- a/test/unit/jest.config.js +++ b/test/unit/jest.config.js @@ -39,6 +39,10 @@ module.exports = { transform: { '^.+\\.[jt]sx?$': '/test/unit/scripts/babel-transformer.js', }, + transformIgnorePatterns: [ + '/node_modules/(?!(docker-compose|yaml)/)', + '\\.pnp\\.[^\\/]+$', + ], snapshotSerializers: [ '@emotion/jest/serializer', 'snapshot-diff/serializer',