dockerSocket function
Returns the path to the Docker Unix socket.
Resolution order:
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE— explicit socket path.DOCKER_HOSTstarting withunix://— custom Unix socket path.$XDG_RUNTIME_DIR/docker.sock— rootless Docker socket (if the file exists)./var/run/docker.sock— the standard system-wide Docker socket.
Implementation
String dockerSocket() {
final override =
Platform.environment['TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE'];
if (override != null && override.isNotEmpty) {
return override;
}
// Support unix:// DOCKER_HOST (rootless Docker, custom socket paths)
final dockerHost = Platform.environment['DOCKER_HOST'] ?? '';
if (dockerHost.startsWith('unix://')) {
final socketPath = dockerHost.substring('unix://'.length);
if (socketPath.isNotEmpty) {
return socketPath;
}
}
// Try rootless Docker socket via XDG_RUNTIME_DIR
final xdgRuntimeDir = Platform.environment['XDG_RUNTIME_DIR'];
if (xdgRuntimeDir != null && xdgRuntimeDir.isNotEmpty) {
final rootlessSocket = '$xdgRuntimeDir/docker.sock';
if (File(rootlessSocket).existsSync()) {
return rootlessSocket;
}
}
return '/var/run/docker.sock';
}