github.com/weaviate/weaviate@v1.24.6/test/docker/azurite.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package docker 13 14 import ( 15 "context" 16 "fmt" 17 "time" 18 19 "github.com/docker/go-connections/nat" 20 "github.com/testcontainers/testcontainers-go" 21 "github.com/testcontainers/testcontainers-go/wait" 22 ) 23 24 const Azurite = "azurite" 25 26 func startAzurite(ctx context.Context, networkName string) (*DockerContainer, error) { 27 blobPort := nat.Port("10000/tcp") 28 container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ 29 ContainerRequest: testcontainers.ContainerRequest{ 30 Image: "mcr.microsoft.com/azure-storage/azurite", 31 ExposedPorts: []string{"10000/tcp", "10001/tcp", "10002/tcp"}, 32 Hostname: Azurite, 33 AutoRemove: true, 34 Networks: []string{networkName}, 35 NetworkAliases: map[string][]string{ 36 networkName: {Azurite}, 37 }, 38 Name: Azurite, 39 Cmd: []string{Azurite, "--blobHost", "0.0.0.0", "--queueHost", "0.0.0.0", "--tableHost", "0.0.0.0"}, 40 WaitingFor: wait. 41 ForAll( 42 wait.ForLog("Azurite Blob service is successfully listening at http://0.0.0.0:10000"), 43 wait.ForLog("Azurite Queue service is successfully listening at http://0.0.0.0:10001"), 44 wait.ForLog("Azurite Table service is successfully listening at http://0.0.0.0:10002"), 45 wait.ForListeningPort(blobPort), 46 wait.ForListeningPort("10001/tcp"), 47 wait.ForListeningPort("10002/tcp"), 48 ).WithDeadline(60 * time.Second), 49 }, 50 Started: true, 51 Reuse: true, 52 }) 53 if err != nil { 54 return nil, err 55 } 56 uri, err := container.PortEndpoint(ctx, blobPort, "") 57 if err != nil { 58 return nil, err 59 } 60 envSettings := make(map[string]string) 61 connectionString := "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://%s/devstoreaccount1;" 62 blobEndpoint := fmt.Sprintf("%s:%s", Azurite, blobPort.Port()) 63 envSettings["AZURE_STORAGE_CONNECTION_STRING"] = fmt.Sprintf(connectionString, blobEndpoint) 64 endpoints := make(map[EndpointName]endpoint) 65 endpoints[HTTP] = endpoint{blobPort, uri} 66 return &DockerContainer{Azurite, endpoints, container, envSettings}, nil 67 }