Skip to content

Commit dddd72e

Browse files
authored
Merge pull request #373 from laurazard/network-mode-networks
2 parents 4d6b286 + 23dd350 commit dddd72e

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

loader/validate.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ func checkConsistency(project *types.Project) error {
5151
}
5252
}
5353

54+
if s.NetworkMode != "" && len(s.Networks) > 0 {
55+
return errors.Wrap(errdefs.ErrInvalid, fmt.Sprintf("service %s declares mutually exclusive `network_mode` and `networks`", s.Name))
56+
}
5457
for network := range s.Networks {
5558
if _, ok := project.Networks[network]; !ok {
5659
return errors.Wrap(errdefs.ErrInvalid, fmt.Sprintf("service %q refers to undefined network %s", s.Name, network))

loader/validate_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,24 @@ func TestValidateNetworkMode(t *testing.T) {
138138
err := checkConsistency(project)
139139
assert.NilError(t, err)
140140
})
141+
142+
t.Run("network_mode & networks can't both be defined", func(t *testing.T) {
143+
project := &types.Project{
144+
Networks: types.Networks{"mynetwork": types.NetworkConfig{}},
145+
Services: types.Services([]types.ServiceConfig{
146+
{
147+
Name: "myservice1",
148+
Image: "scratch",
149+
NetworkMode: "host",
150+
Networks: map[string]*types.ServiceNetworkConfig{
151+
"mynetwork": {},
152+
},
153+
},
154+
}),
155+
}
156+
err := checkConsistency(project)
157+
assert.Error(t, err, "service myservice1 declares mutually exclusive `network_mode` and `networks`: invalid compose project")
158+
})
141159
}
142160

143161
func TestValidateSecret(t *testing.T) {

0 commit comments

Comments
 (0)