Is it possible to expose/open more than one port on an Azure Container Instance? I\'ve only been able to open one port per container.
I\'d like to run the equivalent of:
This can now be done via Azure CLI. Example is below:
az container create -g MyResourceGroup --name myalpine --image alpine:latest --ip-address public --ports 80 443
https://docs.microsoft.com/en-us/cli/azure/container?view=azure-cli-latest#az_container_create
Now Azure Portal provides way to add two extra ports. All you need is to say "Yes" to Open additional ports in Configuration while creating ACI. See Image below.
Since ports
( indicated by []
) property is an array you can add more elements to it:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string",
"defaultValue": "acilinuxpublicipcontainergroup"
},
"image": {
"type": "string",
"defaultValue": "microsoft/aci-helloworld"
},
"port": {
"type": "string",
"defaultValue": "80"
},
"cpuCores": {
"type": "string",
"defaultValue": "1.0"
},
"memoryInGb": {
"type": "string",
"defaultValue": "1.5"
}
},
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2017-08-01-preview",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[parameters('name')]",
"properties": {
"image": "[parameters('image')]",
"ports": [
{
"port": "[parameters('port')]"
}
],
"resources": {
"requests": {
"cpu": "[parameters('cpuCores')]",
"memoryInGb": "[parameters('memoryInGb')]"
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "[parameters('port')]"
},
{
"protocol": "tcp",
"port": "[parameters('port2')]"
}
]
}
}
}
]
}
https://github.com/Azure/azure-quickstart-templates/tree/master/101-aci-linuxcontainer-public-ip
Deploy template:
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-create-first-template#deploy-template
You can, but currently you can only do it with an Azure Resource Manager template. The CLI and the portal are both oriented towards the simple case: one container in the container group, and one exposed port in that container.
Here's an example resources section from an Azure Resource Manager template (see full template):
"resources": [
{
"name": "myContainerGroup",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2017-08-01-preview",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "myContainer",
"properties": {
"image": "seanmckenna/aci-helloworld-multiport",
"ports": [
{
"port": "80"
},
{
"port": "443"
}
],
"resources": {
"requests": {
"cpu": "1.0",
"memoryInGb": "1.5"
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "80"
},
{
"protocol": "tcp",
"port": "443"
}
]
}
}
}
]
You can deploy the template using az group deployment create
(full documentation):
az group deployment create -n myDeployment --template-file azuredeploy.json --parameters @azuredeploy.parameters.json -g myResourceGroup