podman
1package utils
2
3import (
4"fmt"
5"net"
6"strconv"
7)
8
9// Find a random, open port on the host.
10func GetRandomPort() (int, error) {
11l, err := net.Listen("tcp", ":0")
12if err != nil {
13return 0, fmt.Errorf("unable to get free TCP port: %w", err)
14}
15defer l.Close()
16_, randomPort, err := net.SplitHostPort(l.Addr().String())
17if err != nil {
18return 0, fmt.Errorf("unable to determine free port: %w", err)
19}
20rp, err := strconv.Atoi(randomPort)
21if err != nil {
22return 0, fmt.Errorf("unable to convert random port to int: %w", err)
23}
24return rp, nil
25}
26