44
55use EE ;
66use EE \Migration \Base ;
7+ use Symfony \Component \Filesystem \Filesystem ;
78
89class CheckAndUpdateDockerOne extends Base {
910
@@ -15,7 +16,7 @@ class CheckAndUpdateDockerOne extends Base {
1516 public function up () {
1617
1718 EE ::log ( 'Checking Docker version. ' );
18- $ docker_version = EE ::launch ( 'docker version --format "{{.Server.Version}}" ' )->stdout ;
19+ $ docker_version = trim ( EE ::launch ( 'docker version --format "{{.Server.Version}}" ' )->stdout ) ;
1920
2021 if ( version_compare ( $ docker_version , '20.10.10 ' , '< ' ) ) {
2122 EE ::warning ( 'Docker version should be 20.10.10 or above. ' );
@@ -33,11 +34,31 @@ public function up() {
3334 }
3435 }
3536
37+ EE ::log ( 'Checking docker-compose version ' );
38+ $ docker_compose_version = trim ( EE ::launch ( 'docker-compose version --short ' )->stdout );
39+ $ docker_compose_path = EE ::launch ( 'command -v docker-compose ' )->stdout ;
40+ $ docker_compose_path = trim ( $ docker_compose_path );
41+ $ docker_compose_backup_path = EE_BACKUP_DIR . '/docker-compose.backup ' ;
42+ $ fs = new Filesystem ();
43+ if ( ! $ fs ->exists ( EE_BACKUP_DIR ) ) {
44+ $ fs ->mkdir ( EE_BACKUP_DIR );
45+ }
46+ $ fs ->copy ( $ docker_compose_path , $ docker_compose_backup_path );
47+
48+ if ( version_compare ( '1.29.2 ' , $ docker_compose_version , '> ' ) ) {
49+ EE ::exec ( "curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o $ docker_compose_path && chmod +x $ docker_compose_path " );
50+ }
51+
3652 // Check the version again post update.
37- $ docker_version = EE ::launch ( 'docker version --format "{{.Server.Version}}" ' )->stdout ;
53+ $ docker_version = trim ( EE ::launch ( 'docker version --format "{{.Server.Version}}" ' )->stdout ) ;
3854 if ( version_compare ( $ docker_version , '20.10.10 ' , '< ' ) ) {
3955 EE ::error ( 'Docker version should be 20.10.10 or above. Please update Docker and try again. ' );
4056 }
57+
58+ $ docker_compose_version = trim ( EE ::launch ( 'docker-compose version --short ' )->stdout );
59+ if ( version_compare ( '1.29.2 ' , $ docker_compose_version , '!= ' ) ) {
60+ EE ::error ( 'Docker-compose version should be 1.29.2. Please update Docker-compose and try again. ' );
61+ }
4162 }
4263
4364 /**
0 commit comments