page_type | languages | products | description | urlFragment | ||
---|---|---|---|---|---|---|
sample |
|
|
How to deploy Wildfly applications onto App Service |
update-this-to-unique-url-stub |
This repository shows how to build and run your own Wildfly container image on Azure App Service. Once the container is running on App Service, you can deploy your WAR applications onto the container using App Service's REST APIs for publishing.
Outline the file contents of the repository.
File/folder | Description |
---|---|
tmp/ |
Files that are copied to the container image during build |
sample/ |
A sample application to build and deploy onto the image |
.gitignore |
Define what to ignore at commit time. |
CHANGELOG.md |
List of changes to the sample. |
CONTRIBUTING.md |
Guidelines for contributing to the sample. |
README.md |
This README file. |
LICENSE |
The license for the sample. |
You should have the following development tools installed on your local machine.
You will also need accounts for the following services
- Microsoft Azure
- A container registry such as DockerHub or Azure Container Registry
Before deploying to App Service, build and run the image locally.
docker build -t wildfly .
docker run -p 8080:80 wildfly
Open a browser to http://127.0.0.1:8080/ and index.jsp
will be rendered by Wildfly.
Now that the container works locally, we will push the container to our registry so our Web App for Containers can pull it in the next step. First, create a container registry on DockerHub or Azure Container Registry (ACR) by following either of the guides below.
Once your registry is created, log into the registry. The commands will differ slightly for DockerHub and ACR. If your registry is on DockerHub, log in with docker using the command below. Enter your username and password when prompted.
docker login
If your registry is on ACR, log in with the Azure CLI using the command below.
az acr login --name <your-registry-name>
Once you are logged in, push the image to your registry using docker. This command is the same for both DockerHub and ACR registries.
docker push <your-registry-name>/wildfly
If you have not already, create a Web App for Container using the Azure CLI. This command will create your Web App and configure it to use your Wildfly image. If you do not already have an App Service Plan, you can use az appservice plan create
to create one.
az webapp create --name <your-desired-name> --plan <your-app-service-plan> -g <your-resource-group> -i <your-registry-name>/wildfly
Once the Web App has been deployed, open your browser to https://<your-desired-name>.azurewebsites.net/. You will see index.jsp.
Now that the Wildfly runtime is functioning on App Service, we will deploy a sample WAR application onto Wildfly. First, build the application using Maven.
cd sample/agoncal-application-petstore-ee7
mvn clean install -DskipTests
Before deploying the built application, we need to configure our Web App to use the service's shared file storage. This will allow us to deploy artifacts using App Service's REST APIs. Your Web App already has an application setting named WEBSITES_ENABLE_APP_SERVICE_STORAGE
with a value of false
. Using the Azure Portal or CLI, change this setting's value to true
.
Next, deploy the WAR file using App Service's REST APIs for deployment. For WAR applications, use /api/wardeploy/
. The username and password for the following command are from your Web App's publish profile.
curl -X Post -u <username> --data-binary @"target/applicationPetstore.war" https://<your-app-name>.scm.azurewebsites.net/api/wardeploy
If you are using PowerShell, there is a Azure commandlet for WAR deploy.
Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath "target\applicationPetstore.war"
Once the deployment completes, browse to your application and you will see the Pet Store application has replaced the default index.jsp from earlier.
Congratulations! You now have a Wildfly image in your container registry and running on App Service. Finally, you deployed a WAR application to the image.
In this sample we deployed an example WAR application. You will likely want to deploy your own apps onto Wildfly. To do so, you can use WAR deploy again with our own artifact.
The Dockerfile has been configured to allow SSH using App Service's native APIs. To SSH into the container, go the Azure Portal and select your Web App. Under Development Tools select the option for SSH.
In this sample, we deployed our WAR application onto the running image using App Service's /api/wardeploy/
endpoint. Alternatively, you can modify your Dockerfile to build your app and copy the WAR file. This will couple the container image with the WAR application(s).
This sample uses Wildfly 14. You can use a different version of Wildfly by modifying the Dockerfile. See the Wildfly downloads site for a full list of available Wildfly versions.
Please see the pages below for more information on the technologies used.
The base image in the sample Dockerfile uses a Azul Zulu Enterprise build of the OpenJDK. By using Azul Zulu, you get free maintenance updates and you can resolve support issues with Microsoft. This support does not extend to the Wildfly runtime. See the links below for more information about Azul Zulu Enterprise for Azure.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.