func (svc *IService) checkvolumes(ctr *docker.Container) bool { dctr, err := ctr.Inspect() if err != nil { return false } if svc.Volumes != nil { for src, dest := range svc.Volumes { if p, ok := dctr.Volumes[dest]; ok { src, _ = filepath.EvalSymlinks(svc.getResourcePath(src)) if rel, _ := filepath.Rel(filepath.Clean(src), p); rel != "." { return false } } else { return false } } } if isvcsVolumes != nil { for src, dest := range isvcsVolumes { if p, ok := dctr.Volumes[dest]; ok { if rel, _ := filepath.Rel(src, p); rel != "." { return false } } else { return false } } } return true }
func updateInstance(state *servicestate.ServiceState, ctr *docker.Container) error { if _, err := ctr.Inspect(); err != nil { return err } state.DockerID = ctr.ID state.Started = ctr.Created state.PrivateIP = ctr.NetworkSettings.IPAddress state.PortMapping = make(map[string][]domain.HostIPAndPort) for k, v := range ctr.NetworkSettings.Ports { pm := []domain.HostIPAndPort{} for _, pb := range v { pm = append(pm, domain.HostIPAndPort{HostIP: pb.HostIp, HostPort: pb.HostPort}) state.PortMapping[string(k)] = pm } } return nil }