Using Testcontainers on Rancher Desktop
Rancher Desktop can be used with Testcontainers to execute ephemeral tests and containers that work inside Docker. This guide demonstrates the use of Testcontainers with a sample repository.
Prerequisites
Testcontainers can only be used with the moby (dockerd)
runtime as it requires a Docker-API compatible container runtime. Kubernetes must be disabled for machines on Apple Silicon. The setting can be disabled via the Preferences > Kubernetes dialog, or by using the rdctl
command below:
rdctl set --kubernetes-enabled=false
Please also ensure that Apache Maven is installed on your machine in order to make use of the mvn verify command.
- Linux
- macOS
- Windows
You can download a sample test repository in the testcontainers-java-repro
located here: https://github.com/testcontainers/testcontainers-java-repro
After the repository is downloaded, please navigate to the testcontainers-java-repro
folder and run the command mvn verify
.
mvn verify
After the command has been run, you should see a BUILD SUCCESS
with test statistics for failures, number of tests ran, skipped tests, time elapsed, and errors.
You can download a sample test repository in the testcontainers-java-repro
located here: https://github.com/testcontainers/testcontainers-java-repro
- Apple Silicon
- Intel
Currently, workarounds are needed for using Testcontainers on macOS M1 machines. Below are methods for using Testcontainers on either runtime, depending on administrative access.
QEMU
Workaround Summary
This runtime can be used with administrative access enabled which can be set via the Preferences > Application > General dialog. This will ensure that routable IP’s are allocated.
Next, export the virtual machine port explicitly using the command below:
export TESTCONTAINERS_HOST_OVERRIDE=$(rdctl shell ip a show rd0 | awk '/inet / {sub("/.*",""); print $2}')
VZ
Workaround Summary
This runtime can be used with administrative access enabled which can be set via the Preferences > Application > General dialog. This will ensure that routable IP’s are allocated.
Next, export the virtual machine port explicitly using the command below:
export TESTCONTAINERS_HOST_OVERRIDE=$(rdctl shell ip a show vznat | awk '/inet / {sub("/.*",""); print $2}')
For VZ
virtual machines, you can also use Testcontainers without the need for administrative access by exporting the settings below:
export DOCKER_HOST=unix://$HOME/.rd/docker.sock
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
export TESTCONTAINERS_HOST_OVERRIDE=$(rdctl shell ip a show vznat | awk '/inet / {sub("/.*",""); print $2}')
After the respective virtual machine settings have been applied, and the repository is downloaded, please navigate to the testcontainers-java-repro
folder and run the command mvn verify
.
mvn verify
After the command has been run, you should see a BUILD SUCCESS
with test statistics for failures, number of tests ran, skipped tests, time elapsed, and errors.
After the repository is downloaded, please navigate to the testcontainers-java-repro
folder and run the command mvn verify
.
mvn verify
After the command has been run, you should see a BUILD SUCCESS
with test statistics for failures, number of tests ran, skipped tests, time elapsed, and errors.
You can download a sample test repository in the testcontainers-java-repro
located here: https://github.com/testcontainers/testcontainers-java-repro
After the repository is downloaded, please navigate to the testcontainers-java-repro
folder and run the command mvn verify
.
mvn verify
After the command has been run, you should see a BUILD SUCCESS
with test statistics for failures, number of tests ran, skipped tests, time elapsed, and errors.