mirror of https://github.com/docker/compose.git
Merge pull request #268 from docker/compose_expose_miltiple_ports
Allow ACI compose to expose several ports
This commit is contained in:
commit
9789ce119b
|
@ -81,6 +81,7 @@ func ToContainerGroup(aciContext store.AciContext, p compose.Project) (container
|
|||
},
|
||||
}
|
||||
|
||||
var groupPorts []containerinstance.Port
|
||||
for _, s := range project.Services {
|
||||
service := serviceConfigAciHelper(s)
|
||||
containerDefinition, err := service.getAciContainer(volumesCache)
|
||||
|
@ -89,7 +90,6 @@ func ToContainerGroup(aciContext store.AciContext, p compose.Project) (container
|
|||
}
|
||||
if service.Ports != nil {
|
||||
var containerPorts []containerinstance.ContainerPort
|
||||
var groupPorts []containerinstance.Port
|
||||
for _, portConfig := range service.Ports {
|
||||
if portConfig.Published != 0 && portConfig.Published != portConfig.Target {
|
||||
msg := fmt.Sprintf("Port mapping is not supported with ACI, cannot map port %d to %d for container %s",
|
||||
|
|
|
@ -160,6 +160,57 @@ func (suite *ConvertTestSuite) TestComposeSingleContainerGroupToContainerNoDnsSi
|
|||
Expect(*(*group.Containers)[0].Image).To(Equal("image1"))
|
||||
}
|
||||
|
||||
func (suite *ConvertTestSuite) TestComposeContainerGroupToContainerMultiplePorts() {
|
||||
project := compose.Project{
|
||||
Name: "",
|
||||
Config: types.Config{
|
||||
Services: []types.ServiceConfig{
|
||||
{
|
||||
Name: "service1",
|
||||
Image: "image1",
|
||||
Ports: []types.ServicePortConfig{
|
||||
{
|
||||
Published: 80,
|
||||
Target: 80,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "service2",
|
||||
Image: "image2",
|
||||
Ports: []types.ServicePortConfig{
|
||||
{
|
||||
Published: 8080,
|
||||
Target: 8080,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
group, err := ToContainerGroup(suite.ctx, project)
|
||||
Expect(err).To(BeNil())
|
||||
Expect(len(*group.Containers)).To(Equal(3))
|
||||
|
||||
container1 := (*group.Containers)[0]
|
||||
container2 := (*group.Containers)[1]
|
||||
Expect(*container1.Name).To(Equal("service1"))
|
||||
Expect(*container1.Image).To(Equal("image1"))
|
||||
portsC1 := *container1.Ports
|
||||
Expect(*portsC1[0].Port).To(Equal(int32(80)))
|
||||
|
||||
Expect(*container2.Name).To(Equal("service2"))
|
||||
Expect(*container2.Image).To(Equal("image2"))
|
||||
portsC2 := *container2.Ports
|
||||
Expect(*portsC2[0].Port).To(Equal(int32(8080)))
|
||||
|
||||
groupPorts := *group.IPAddress.Ports
|
||||
Expect(len(groupPorts)).To(Equal(2))
|
||||
Expect(*groupPorts[0].Port).To(Equal(int32(80)))
|
||||
Expect(*groupPorts[1].Port).To(Equal(int32(8080)))
|
||||
}
|
||||
|
||||
func TestConvertTestSuite(t *testing.T) {
|
||||
RegisterTestingT(t)
|
||||
suite.Run(t, new(ConvertTestSuite))
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
version: '3.3'
|
||||
|
||||
services:
|
||||
db:
|
||||
build: db
|
||||
image: gtardif/sentences-db
|
||||
|
||||
words:
|
||||
build: words
|
||||
image: gtardif/sentences-api
|
||||
ports:
|
||||
- "8080:8080"
|
||||
web:
|
||||
build: web
|
||||
image: gtardif/sentences-web
|
||||
ports:
|
||||
- "80:80"
|
Loading…
Reference in New Issue