github.com/goravel/framework@v1.13.9/support/docker/redis.go (about)

     1  package docker
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/go-redis/redis/v8"
     7  	"github.com/ory/dockertest/v3"
     8  )
     9  
    10  func Redis() (*dockertest.Pool, *dockertest.Resource, error) {
    11  	pool, err := Pool()
    12  	if err != nil {
    13  		return nil, nil, err
    14  	}
    15  	resource, err := Resource(pool, &dockertest.RunOptions{
    16  		Repository: "redis",
    17  		Tag:        "latest",
    18  		Env:        []string{},
    19  	})
    20  	if err != nil {
    21  		return nil, nil, err
    22  	}
    23  	_ = resource.Expire(600)
    24  
    25  	if err := pool.Retry(func() error {
    26  		client := redis.NewClient(&redis.Options{
    27  			Addr:     "localhost:" + resource.GetPort("6379/tcp"),
    28  			Password: "",
    29  			DB:       0,
    30  		})
    31  
    32  		if _, err := client.Ping(context.Background()).Result(); err != nil {
    33  			return err
    34  		}
    35  
    36  		return nil
    37  	}); err != nil {
    38  		return nil, nil, err
    39  	}
    40  
    41  	return pool, resource, nil
    42  }