Docker Compose Support

Allows to spin up services configured via docker-compose.yml.

class testcontainers.compose.DockerCompose(filepath, compose_file_name='docker-compose.yml', pull=False, build=False, env_file=None)

Manage docker compose environments.

Parameters
  • filepath (str) – The relative directory containing the docker compose configuration file

  • compose_file_name (str) – The file name of the docker compose configuration file

  • pull (bool) – Attempts to pull images before launching environment

  • build (bool) – Whether to build images referenced in the configuration file

  • env_file (str) – Path to an env file containing environment variables to pass to docker compose

Example

with DockerCompose("/home/project",
                   compose_file_name=["docker-compose-1.yml", "docker-compose-2.yml"],
                   pull=True) as compose:
    host = compose.get_service_host("hub", 4444)
    port = compose.get_service_port("hub", 4444)
    driver = webdriver.Remote(
        command_executor=("http://{}:{}/wd/hub".format(host,port)),
        desired_capabilities=CHROME,
    )
    driver.get("http://automation-remarks.com")
    stdout, stderr = compose.get_logs()
    if stderr:
        print("Errors\n:{}".format(stderr))
hub:
image: selenium/hub
ports:
- "4444:4444"
firefox:
image: selenium/node-firefox
links:
    - hub
expose:
    - "5555"
chrome:
image: selenium/node-chrome
links:
    - hub
expose:
    - "5555"
docker_compose_command()

Returns command parts used for the docker compose commands

Returns

The docker compose command parts

Return type

list[str]

exec_in_container(service_name, command)

Executes a command in the container of one of the services.

Parameters
  • service_name (str) – Name of the docker compose service to run the command in

  • command (list[str]) – The command to execute

Returns

stdout, stderr, return code

Return type

tuple[str, str, int]

get_logs()

Returns all log output from stdout and stderr

Returns

stdout, stderr

Return type

tuple[bytes, bytes]

get_service_host(service_name, port)

Returns the host for one of the services.

Parameters
  • service_name (str) – Name of the docker compose service

  • port (int) – The internal port to get the host for

Returns

The hostname for the service

Return type

str

get_service_port(service_name, port)

Returns the mapped port for one of the services.

Parameters
  • service_name (str) – Name of the docker compose service

  • port (int) – The internal port to get the mapping for

Returns

The mapped port on the host

Return type

str

start()

Starts the docker compose environment.

stop()

Stops the docker compose environment.

wait_for(url)

Waits for a response from a given URL. This is typically used to block until a service in the environment has started and is responding. Note that it does not assert any sort of return code, only check that the connection was successful.

Parameters

url (str) – URL from one of the services in the environment to use to wait on