@@ -389,13 +389,7 @@ func (u *ContainerService) ContainerInfo(req dto.OperationWithName) (*dto.Contai
389
389
if oldContainer .HostConfig .Memory != 0 {
390
390
data .Memory = float64 (oldContainer .HostConfig .Memory ) / 1024 / 1024
391
391
}
392
- for _ , bind := range oldContainer .HostConfig .Binds {
393
- parts := strings .Split (bind , ":" )
394
- if len (parts ) != 3 {
395
- continue
396
- }
397
- data .Volumes = append (data .Volumes , dto.VolumeHelper {SourceDir : parts [0 ], ContainerDir : parts [1 ], Mode : parts [2 ]})
398
- }
392
+ data .Volumes = loadVolumeBinds (oldContainer .HostConfig .Binds )
399
393
400
394
return & data , nil
401
395
}
@@ -843,3 +837,42 @@ func reCreateAfterUpdate(name string, client *client.Client, config *container.C
843
837
global .LOG .Errorf ("restart after container update failed, err: %v" , err )
844
838
}
845
839
}
840
+
841
+ func loadVolumeBinds (binds []string ) []dto.VolumeHelper {
842
+ var datas []dto.VolumeHelper
843
+ for _ , bind := range binds {
844
+ parts := strings .Split (bind , ":" )
845
+ var volumeItem dto.VolumeHelper
846
+ if len (parts ) > 3 {
847
+ continue
848
+ }
849
+ volumeItem .SourceDir = parts [0 ]
850
+ if len (parts ) == 1 {
851
+ volumeItem .ContainerDir = parts [0 ]
852
+ volumeItem .Mode = "rw"
853
+ }
854
+ if len (parts ) == 2 {
855
+ switch parts [1 ] {
856
+ case "r" , "ro" :
857
+ volumeItem .ContainerDir = parts [0 ]
858
+ volumeItem .Mode = "ro"
859
+ case "rw" :
860
+ volumeItem .ContainerDir = parts [0 ]
861
+ volumeItem .Mode = "rw"
862
+ default :
863
+ volumeItem .ContainerDir = parts [1 ]
864
+ volumeItem .Mode = "rw"
865
+ }
866
+ }
867
+ if len (parts ) == 3 {
868
+ volumeItem .ContainerDir = parts [1 ]
869
+ if parts [2 ] == "r" {
870
+ volumeItem .Mode = "ro"
871
+ } else {
872
+ volumeItem .Mode = parts [2 ]
873
+ }
874
+ }
875
+ datas = append (datas , volumeItem )
876
+ }
877
+ return datas
878
+ }
0 commit comments