in internal/components/setup/compose.go [165:210]
func exposeComposePort(dockerProvider *DockerProvider, service *ComposeService, cli *client.Client, identity string,
e2eConfig *config.E2EConfig) error {
if len(service.waitStrategies) == 0 {
return nil
}
// get real ip address for access and export to env
host, err := dockerProvider.daemonHost(context.Background())
if err != nil {
return err
}
container, err := service.FindContainer(cli, identity)
if err != nil {
return err
}
// format: <service_name>_host
if err := exportComposeEnv(fmt.Sprintf("%s_host", service.Name), host, service.Name); err != nil {
return err
}
for inx := range service.waitStrategies {
for _, containerPort := range container.Ports {
if int(containerPort.PrivatePort) != service.waitStrategies[inx].expectPort {
continue
}
if err := waitPortUntilReady(e2eConfig, container, dockerProvider, service.waitStrategies[inx].expectPort); err != nil {
return err
}
// expose env config to env
// format: <service_name>_<port>
if err := exportComposeEnv(
fmt.Sprintf("%s_%d", service.Name, containerPort.PrivatePort),
fmt.Sprintf("%d", containerPort.PublicPort),
service.Name); err != nil {
return err
}
break
}
}
return nil
}