Are there any examples on using Azure's App Servic...
# general
f
Are there any examples on using Azure's App Service to deploy a Docker container? i.e. https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image. I'm finding it quite difficult to map the instructions in the Azure docs to what I'd write in Pulumi.
w
Cc @tall-librarian-49374 who may have looked at this?
f
I can kinda use the TF example https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/examples/app-service/docker-basic/main.tf. It's really unclear what's going on though. And how do you do all the usual configure ports, load balancers, etc.
c
I'm going to write one on the weekend. My company's website runs on app services inside a docker container. If it's not too urgent, let me see how far I get.
f
@colossal-room-15708 That'd be fantastic! Using Azure + Pulumi has been quite painful so far, especially compared to AWS. I've found the console UI does not match up with the parameters Pulumi expects. Any direction on how to deploy a Docker container that exposes port 8080 and visit that in the browser?
I have this but I cannot connect to the Azure website:
Copy code
const appPlan = new azure.appservice.Plan("fib-plan", {
    resourceGroupName: resourceGroup.name,
    kind: "Linux",
    name: stackName,
    sku: {
        size: "S1",
        tier: "Standard",
        capacity: 1
    },
});

const fibApp = new azure.appservice.AppService("fib-app-service", {
    name: stackName,
    resourceGroupName: resourceGroup.name,
    appServicePlanId: appPlan.id,
    appSettings: {
        WEBSITES_PORT: 8080
    },
    siteConfig: {
        linuxFxVersion: `DOCKER|${fibImage.imageName}`
    }
});
c
I have a 4hr customer workshop this morning (it's Friday 6:30am here). I'll take a look after that. However, I have traffic manager and app gateway in front of my app service.
Oh, I will also likely use nodejs, if that's okay.
f
For Pulumi? Yes.
👍 1
The main problem I'm running into is in this step: https://docs.microsoft.com/en-us/azure/app-service/containers/quickstart-docker-go#create-a-web-app The doc says to run this command:
Copy code
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app name> --deployment-container-image-name microsoft/azure-appservices-go-quickstart
There does not appear to be a way to pass
--deployment-container-image-name
to Pulumi.
c
On the bus now. I wouldn't rely on portal or CLI parameters. Always check what the API wants.
f
How do you check that?
REST API reference?
After following the instructions in that doc via the CLI, I can see in the console that an app was created that has the Type
app,linux,container
. My Pulumi written app has the type
app
. Not sure how to get the correct Type.
I diff'ed the output of
az webapp config show
for the example web service and the Pulumi created one and there is nothing significant. There must be some magic happening elsewhere.
Wowza. So apparently in order to create a Linux container app you need to set the property
reserved = true
in your app plan. Nowhere in the docs does it say this.
t
It seems to be a common ask, see this issue for example https://github.com/pulumi/pulumi-azure/issues/228#issuecomment-489318488
Could you add a comment to it with your scenario? We'll take it and make a new example.
f
Is the pattern with pulumi to include the deployment script in each app repo?
f
@tall-librarian-49374 Sure - added a comment with the code I ended up with.
c
@full-dress-10026 check the TF doco, there it mentions the
reserved
bit https://www.terraform.io/docs/providers/azurerm/r/app_service_plan.html#kind