@@ -61,8 +61,7 @@ def __init__(
61
61
self .build = build
62
62
self .env_file = env_file
63
63
self .services = services
64
- self ._user_defined_compose_command = compose_command .split (" " ) if compose_command else None
65
- self .docker_compose = self .base_docker_compose ()
64
+ self .compose_command = self ._get_compose_command (compose_command )
66
65
67
66
def __enter__ (self ) -> "DockerCompose" :
68
67
self .start ()
@@ -71,7 +70,7 @@ def __enter__(self) -> "DockerCompose":
71
70
def __exit__ (self , exc_type , exc_val , exc_tb ) -> None :
72
71
self .stop ()
73
72
74
- def base_docker_compose (self ):
73
+ def _get_compose_command (self , command ):
75
74
"""
76
75
Returns the basecommand parts used for the docker compose commands
77
76
depending on the docker compose api.
@@ -81,8 +80,8 @@ def base_docker_compose(self):
81
80
list[str]
82
81
The docker compose command parts
83
82
"""
84
- if self . _user_defined_compose_command :
85
- return self . _user_defined_compose_command
83
+ if command :
84
+ return command . split ( " " )
86
85
87
86
if subprocess .run (["docker" , "compose" , "--help" ], stdout = subprocess .DEVNULL ,
88
87
stderr = subprocess .STDOUT ).returncode == 0 :
@@ -97,7 +96,7 @@ def docker_compose_command(self) -> List[str]:
97
96
Returns:
98
97
cmd: Docker compose command parts.
99
98
"""
100
- docker_compose_cmd = self .base_docker_compose [:]
99
+ docker_compose_cmd = self ._get_compose_command [:]
101
100
for file in self .compose_file_names :
102
101
docker_compose_cmd += ['-f' , file ]
103
102
if self .env_file :
@@ -109,10 +108,10 @@ def start(self) -> None:
109
108
Starts the docker compose environment.
110
109
"""
111
110
if self .pull :
112
- pull_cmd = self .docker_compose + ['pull' ]
111
+ pull_cmd = self .compose_command + ['pull' ]
113
112
self ._call_command (cmd = pull_cmd )
114
113
115
- up_cmd = self .docker_compose + ['up' , '-d' ]
114
+ up_cmd = self .compose_command + ['up' , '-d' ]
116
115
if self .build :
117
116
up_cmd .append ('--build' )
118
117
if self .services :
@@ -123,7 +122,7 @@ def stop(self) -> None:
123
122
"""
124
123
Stops the docker compose environment.
125
124
"""
126
- down_cmd = self .docker_compose + ['down' , '-v' ]
125
+ down_cmd = self .compose_command + ['down' , '-v' ]
127
126
self ._call_command (cmd = down_cmd )
128
127
129
128
def get_logs (self ) -> Tuple [str , str ]:
@@ -134,7 +133,7 @@ def get_logs(self) -> Tuple[str, str]:
134
133
stdout: Standard output stream.
135
134
stderr: Standard error stream.
136
135
"""
137
- logs_cmd = self .docker_compose + ["logs" ]
136
+ logs_cmd = self .compose_command + ["logs" ]
138
137
result = subprocess .run (
139
138
logs_cmd ,
140
139
cwd = self .filepath ,
@@ -155,7 +154,7 @@ def exec_in_container(self, service_name: str, command: List[str]) -> Tuple[str,
155
154
stdout: Standard output stream.
156
155
stderr: Standard error stream.
157
156
"""
158
- exec_cmd = self .docker_compose + ['exec' , '-T' , service_name ] + command
157
+ exec_cmd = self .compose_command + ['exec' , '-T' , service_name ] + command
159
158
result = subprocess .run (
160
159
exec_cmd ,
161
160
cwd = self .filepath ,
@@ -191,7 +190,7 @@ def get_service_host(self, service_name: str, port: int) -> str:
191
190
return self ._get_service_info (service_name , port )[0 ]
192
191
193
192
def _get_service_info (self , service : str , port : int ) -> List [str ]:
194
- port_cmd = self .docker_compose + ["port" , service , str (port )]
193
+ port_cmd = self .compose_command + ["port" , service , str (port )]
195
194
try :
196
195
output = subprocess .check_output (port_cmd , cwd = self .filepath ).decode ("utf-8" )
197
196
except subprocess .CalledProcessError as e :
0 commit comments