Skip to content

Commit 81485a4

Browse files
authored
Merge pull request #180 from ndeloof/container_ref
`container:xx` are not constrained to containers managed by compose
2 parents f5b0e49 + 971af55 commit 81485a4

File tree

4 files changed

+12
-44
lines changed

4 files changed

+12
-44
lines changed

loader/merge.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,18 @@ func toServicePortConfigsSlice(dst reflect.Value, m map[interface{}]interface{})
203203
for _, v := range m {
204204
s = append(s, v.(types.ServicePortConfig))
205205
}
206-
sort.Slice(s, func(i, j int) bool { return s[i].Published < s[j].Published })
206+
sort.Slice(s, func(i, j int) bool {
207+
if s[i].Target != s[j].Target {
208+
return s[i].Target < s[j].Target
209+
}
210+
if s[i].Published != s[j].Published {
211+
return s[i].Published < s[j].Published
212+
}
213+
if s[i].HostIP != s[j].HostIP {
214+
return s[i].HostIP < s[j].HostIP
215+
}
216+
return s[i].Protocol < s[j].Protocol
217+
})
207218
dst.Set(reflect.ValueOf(s))
208219
return nil
209220
}

loader/validate.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,6 @@ func checkConsistency(project *types.Project) error {
4545
}
4646
}
4747

48-
if strings.HasPrefix(s.NetworkMode, types.ContainerPrefix) {
49-
containerName := s.NetworkMode[len(types.ContainerPrefix):]
50-
if _, err := project.GetByContainerName(containerName); err != nil {
51-
return fmt.Errorf("service with container_name %q not found for network_mode 'container:%s'", containerName, containerName)
52-
}
53-
}
54-
5548
for _, volume := range s.Volumes {
5649
switch volume.Type {
5750
case types.VolumeTypeVolume:

loader/validate_test.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,4 @@ func TestValidateNetworkMode(t *testing.T) {
138138
err := checkConsistency(project)
139139
assert.NilError(t, err)
140140
})
141-
142-
t.Run("network_mode container fail", func(t *testing.T) {
143-
project := &types.Project{
144-
Services: types.Services([]types.ServiceConfig{
145-
{
146-
Name: "myservice1",
147-
Image: "scratch",
148-
},
149-
{
150-
Name: "myservice2",
151-
Image: "scratch",
152-
NetworkMode: "container:nonexistentcontainer",
153-
},
154-
}),
155-
}
156-
err := checkConsistency(project)
157-
assert.Error(t, err, `service with container_name "nonexistentcontainer" not found for network_mode 'container:nonexistentcontainer'`)
158-
})
159141
}

types/project.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -94,24 +94,6 @@ func (p Project) ConfigNames() []string {
9494
return names
9595
}
9696

97-
func (p Project) GetByContainerName(names ...string) (Services, error) {
98-
if len(names) == 0 {
99-
return p.Services, nil
100-
}
101-
services := Services{}
102-
outLoop:
103-
for _, name := range names {
104-
for _, s := range p.Services {
105-
if name == s.ContainerName {
106-
services = append(services, s)
107-
continue outLoop
108-
}
109-
}
110-
return nil, fmt.Errorf("service with container_name %q could not be found", name)
111-
}
112-
return services, nil
113-
}
114-
11597
// GetServices retrieve services by names, or return all services if no name specified
11698
func (p Project) GetServices(names ...string) (Services, error) {
11799
if len(names) == 0 {

0 commit comments

Comments
 (0)