| # Docker image for Matter Certification Test Harness |
| |
| The Dockerfile here helps build multi-platform Docker images containing the |
| executable binaries necessary for the Matter Test Harness. It utilizes the |
| BuildKit toolkit and Buildx, included within Docker since version 18.06. |
| |
| ## Running |
| |
| In order to properly run the binaries, avahi must be properly set up and passed |
| to the container. |
| |
| Prerequisites: |
| |
| - Host must support and enable IPv6 and be on a network that has IPv6. |
| - IPv6 must be enabled within avahi config on the host. `use-ipv6=yes` in |
| avahi-daemon.conf |
| - Sometimes there are stale avahi entries, so restarting avahi-daemon between |
| runs may be necessary. |
| |
| The host network and dbus must be exposed to the container for avahi to work |
| properly. So for an interactive prompt, use: |
| |
| ``` |
| docker run -it --network host -v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket chip-cert-bins |
| ``` |
| |
| ## Building |
| |
| The Dockerfile requires building using the Buildx plugin, included within |
| docker. It is used to build for both the amd64 and arm64 architectures, so the |
| image may be cross-built and ran directly on a Raspberry Pi or other arm64 based |
| environment. If your docker installation does not have the Buildx plugin, please |
| update docker or install Buildx manually. |
| |
| Prerequisites: |
| |
| - A recent docker installation. |
| - Create a Buildx builder: `docker buildx create --use --name mybuild` |
| - Install the Binfmt cross-platform Docker emulators: |
| `docker run --privileged --rm tonistiigi/binfmt --install all` |
| |
| ### Example: Building for the host platform and loading into Docker |
| |
| ``` |
| docker buildx build --load . |
| ``` |
| |
| The above command will build the image and load them into your local Docker |
| instance. |
| |
| ### Example: Building for another platform and exporting to a tar |
| |
| ``` |
| docker buildx build --platform linux/arm64 --output "dest=/full/path/to/dest/chipcertbins.tar,type=docker" . |
| ``` |
| |
| The above command will build the image and export it to a tar file. You may copy |
| the tar file to a RaspberryPi and import the image by using: |
| |
| ``` |
| docker load --input chipcertbins.tar |
| ``` |
| |
| ### Example: Creating a multi-platform image and pushing to the Docker registry |
| |
| ``` |
| docker buildx build --platform linux/amd64,linux/arm64 --tag chip-cert-bins:tag1 --push . |
| ``` |