@@ -33,7 +33,7 @@ def get_docker_ip():
3333 # When talking to the Docker daemon via a UNIX socket, route all TCP
3434 # traffic to docker containers via the TCP loopback interface.
3535 docker_host = os .environ .get ("DOCKER_HOST" , "" ).strip ()
36- if not docker_host :
36+ if not docker_host or docker_host . startswith ( "unix://" ) :
3737 return "127.0.0.1"
3838
3939 match = re .match (r"^tcp://(.+?):\d+$" , docker_host )
@@ -123,17 +123,27 @@ def str_to_list(arg):
123123@attr .s (frozen = True )
124124class DockerComposeExecutor :
125125
126+ _compose_command = attr .ib ()
126127 _compose_files = attr .ib (converter = str_to_list )
127128 _compose_project_name = attr .ib ()
128129
129130 def execute (self , subcommand ):
130- command = "docker-compose"
131+ command = self . _compose_command
131132 for compose_file in self ._compose_files :
132133 command += ' -f "{}"' .format (compose_file )
133134 command += ' -p "{}" {}' .format (self ._compose_project_name , subcommand )
134135 return execute (command )
135136
136137
138+ @pytest .fixture (scope = "session" )
139+ def docker_compose_command ():
140+ """Docker Compose command to use, it could be either `docker-compose`
141+ for Docker Compose v1 or `docker compose` for Docker Compose
142+ v2."""
143+
144+ return "docker-compose"
145+
146+
137147@pytest .fixture (scope = "session" )
138148def docker_compose_file (pytestconfig ):
139149 """Get an absolute path to the `docker-compose.yml` file. Override this
@@ -180,10 +190,14 @@ def docker_setup():
180190
181191@contextlib .contextmanager
182192def get_docker_services (
183- docker_compose_file , docker_compose_project_name , docker_setup , docker_cleanup
193+ docker_compose_command ,
194+ docker_compose_file ,
195+ docker_compose_project_name ,
196+ docker_setup ,
197+ docker_cleanup ,
184198):
185199 docker_compose = DockerComposeExecutor (
186- docker_compose_file , docker_compose_project_name
200+ docker_compose_command , docker_compose_file , docker_compose_project_name
187201 )
188202
189203 # setup containers.
@@ -201,6 +215,7 @@ def get_docker_services(
201215
202216@pytest .fixture (scope = "session" )
203217def docker_services (
218+ docker_compose_command ,
204219 docker_compose_file ,
205220 docker_compose_project_name ,
206221 docker_setup ,
@@ -210,6 +225,10 @@ def docker_services(
210225 After test are finished, shutdown all services (`docker-compose down`)."""
211226
212227 with get_docker_services (
213- docker_compose_file , docker_compose_project_name , docker_setup , docker_cleanup
228+ docker_compose_command ,
229+ docker_compose_file ,
230+ docker_compose_project_name ,
231+ docker_setup ,
232+ docker_cleanup ,
214233 ) as docker_service :
215234 yield docker_service
0 commit comments