This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can trysigning in orchanging directories.
Access to this page requires authorization. You can trychanging directories.
In this article, you'll learn how to containerize Java web applications (running on Apache Tomcat) and migrate them toAzure Kubernetes Service (AKS) using the Azure Migrate: App Containerization tool. The containerization process doesn’t require access to your codebase and provides an easy way to containerize existing applications. The tool works by using the running state of the applications on a server to determine the application components and helps you package them in a container image. The containerized application can then be deployed on Azure Kubernetes Service (AKS).
The Azure Migrate: App Containerization tool currently supports -
The Azure Migrate: App Containerization tool helps you to -
Note
While all applications won't benefit from a straight shift to containers without significant rearchitecting, some of the benefits of moving existing apps to containers without rewriting include:
In this tutorial, you'll learn how to:
Note
Tutorials show you the simplest deployment path for a scenario so that you can quickly set up a proof-of-concept. Tutorials use default options where possible, and don't show all possible settings and paths.
Before you begin this tutorial, you should:
| Requirement | Details |
|---|---|
| Identify a machine to install the tool | A Windows machine to install and run the Azure Migrate: App Containerization tool. The Windows machine could be a server (Windows Server 2016 or later) or client (Windows 10) operating system, meaning that the tool can run on your desktop as well. The Windows machine running the tool should have network connectivity to the servers/virtual machines hosting the Java web applications to be containerized. Ensure that 6-GB space is available on the Windows machine running the Azure Migrate: App Containerization tool for storing application artifacts. The Windows machine should have internet access, directly or via a proxy. |
| Application servers | - Enable Secure Shell (SSH) connection on port 22 on the server(s) running the Java application(s) to be containerized. |
| Java web application | The tool currently supports - Applications running on Tomcat 8 or Tomcat 9. - Application servers on Ubuntu Linux 16.04/18.04/20.04, Debian 7/8, Red Hat Enterprise Linux 5/6/7. - Applications using Java 7 or Java 8. If you have version outside of this, find an image that supports your required versions and modify the dockerfile to replace image The tool currently doesn't support - Applications servers running multiple Tomcat instances |
If you don't have an Azure subscription, create afree account before you begin.
Once your subscription is set up, you'll need an Azure user account with:
If you just created a free Azure account, you're the owner of your subscription. If you're not the subscription owner, work with the owner to assign the permissions as follows:
In the Azure portal, search for "subscriptions", and underServices, selectSubscriptions.

In theSubscriptions page, select the subscription in which you want to create an Azure Migrate project.
SelectAccess control (IAM).
SelectAdd >Add role assignment to open theAdd role assignment page.
Assign the following role. For detailed steps, seeAssign Azure roles using the Azure portal.
| Setting | Value |
|---|---|
| Role | Owner |
| Assign access to | User |
| Members | azmigrateuser (in this example) |

Your Azure account also needspermissions to register Microsoft Entra apps.
In Azure portal, navigate toMicrosoft Entra ID >Users >User Settings.
InUser settings, verify that Microsoft Entra users can register applications (set toYes by default).

Important
Microsoft recommends that you use roles with the fewest permissions. This helps improve security for your organization. Global Administrator is a highly privileged role that should be limited to emergency scenarios when you can't use an existing role.
In case the 'App registrations' settings is set to 'No', request the tenant/global admin to assign the required permission. Alternately, the tenant/global admin can assign theApplication Developer role to an account to allow the registration of Microsoft Entra App.Learn more.
Download the Azure Migrate: App Containerization installer on a Windows machine.
Launch PowerShell in administrator mode and change the PowerShell directory to the folder containing the installer.
Run the installation script using the command
.\AppContainerizationInstaller.ps1Note
For Windows Server 2022, edit line 135 and removePowerShell-ISE from the feature list, as it's no longer supported.
Open a browser on any machine that can connect to the Windows machine running the App Containerization tool, and open the tool URL:https://machine name or IP address: 44369.
Alternately, you can open the app from the desktop by selecting the app shortcut.
If you see a warning stating that says your connection isn’t private, select Advanced and choose to proceed to the website. This warning appears as the web interface uses a self-signed TLS/SSL certificate.
At the sign-in screen, use the local administrator account on the machine to sign-in.
SelectJava web apps on Tomcat as the type of application you want to containerize.
To specify target Azure service, selectContainers on Azure Kubernetes Service.
SelectSign in to log in to your Azure account.
You'll need a device code to authenticate with Azure. Selecting on sign in will open a modal with the device code.
SelectCopy code & sign in to copy the device code and open an Azure sign in prompt in a new browser tab. If it doesn't appear, make sure you've disabled the pop-up blocker in the browser.

On the new tab, paste the device code and complete sign in using your Azure account credentials. You can close the browser tab after sign in is complete and return to the App Containerization tool's web interface.
Select theAzure tenant that you want to use.
Specify theAzure subscription that you want to use.
The App Containerization helper tool connects remotely to the application servers using the provided credentials and attempts to discover Java web applications (running on Apache Tomcat) hosted on the application servers.
Specify theIP address/FQDN and the credentials of the server running the Java web application that should be used to remotely connect to the server for application discovery.
SelectValidate to verify that the application server is reachable from the machine running the tool and that the credentials are valid. Upon successful validation, the status column will show the status asMapped.

SelectContinue to start application discovery on the selected application servers.
Upon successful completion of application discovery, you can select the list of applications to containerize.

Use the checkbox to select the applications to containerize.
Specify container name: Specify a name for the target container for each selected application. The container name should be specified as <name:tag> where the tag is used for container image. For example, you can specify the target container name asappname:v1.
Parameterizing the configuration makes it available as a deployment time parameter. This allows you to configure this setting while deploying the application as opposed to having it hard-coded to a specific value in the container image. For example, this option is useful for parameters like database connection strings.
Selectapp configurations to review detected configurations.
Select the checkbox to parameterize the detected application configurations.
SelectApply after selecting the configurations to parameterize.

You can add other folders that your application uses. Specify if they should be part of the container image or are to be externalized through persistent volumes on Azure file share. Using persistent volumes works great for stateful applications that store state outside the container or have other static content stored on the file system.Learn more
SelectEdit under App Folders to review the detected application folders. The detected application folders have been identified as mandatory artifacts needed by the application and will be copied into the container image.
SelectAdd folders and specify the folder paths to be added.
To add multiple folders to the same volume, provide comma (,) separated values.
SelectPersistent Volume as the storage option if you want the folders to be stored outside the container on a Persistent Volume.
SelectSave after reviewing the application folders.
SelectContinue to proceed to the container image build phase.
Select Azure Container Registry: Use the dropdown to select anAzure Container Registry that will be used to build and store the container images for the apps. You can use an existing Azure Container Registry or choose to create a new one using the Create new registry option.

Review the Dockerfile: The Dockerfile needed to build the container images for each selected application are generated at the beginning of the build step. SelectReview to review the Dockerfile. You can also add any necessary customizations to the Dockerfile in the review step and save the changes before starting the build process.
Configure Application Insights: You can enable monitoring for your Java apps running on App Service without instrumenting your code. The tool will install the Java standalone agent as part of the container image. Once configured during deployment, the Java agent will automatically collect a multitude of requests, dependencies, logs, and metrics for your application that can be used for monitoring with Application Insights. This option is enabled by default for all Java applications.
Trigger build process: Select the applications to build images for and selectBuild. Selecting build will start the container image build for each application. The tool keeps monitoring the build status continuously and will let you proceed to the next step upon successful completion of the build.
Track build status: You can also monitor progress of the build step by selecting theBuild in Progress link under the status column. The link takes a couple of minutes to be active after you've triggered the build process.
Once the build is completed, selectContinue to specify deployment settings.

Once the container image is built, the next step is to deploy the application as a container onAzure Kubernetes Service (AKS).
Select the Azure Kubernetes Service Cluster: Specify the AKS cluster that the application should be deployed to.
az aks update -n <cluster-name> -g <cluster-resource-group> --attach-acr <acr-name>Specify secret store and monitoring workspace: If you had opted to parameterize application configurations, then specify the secret store to be used for the application. You can choose Azure Key Vault or Kubernetes Secrets for managing your application secrets.
Specify Azure file share: If you had added more folders and selected the Persistent Volume option, then specify the Azure file share that should be used by Azure Migrate: App Containerization tool during the deployment process. The tool will create new directories in this Azure file share to copy over the application folders that are configured for Persistent Volume storage. Once the application deployment is complete, the tool will clean up the Azure file share by deleting the directories it had created.
Application deployment configuration: Once you've completed the steps above, you'll need to specify the deployment configuration for the application. SelectConfigure to customize the deployment for the application. In the configure step you can provide the following customizations:

Deploy the application: Once the deployment configuration for the application is saved, the tool will generate the Kubernetes deployment YAML for the application.
SelectReview to review and customize the Kubernetes deployment YAML for the applications.
Select the application to deploy.
SelectDeploy to start deployments for the selected applications

Once the application is deployed, you can select theDeployment status column to track the resources that were deployed for the application.
All artifacts that are used to build and deploy the application into AKS, including the Dockerfile and Kubernetes YAML specification files, are stored on the machine running the tool. The artifacts are located atC:\ProgramData\Microsoft Azure Migrate App Containerization.
A single folder is created for each application server. You can view and download all intermediate artifacts used in the containerization process by navigating to this folder. The folder, corresponding to the application server, will be cleaned up at the start of each run of the tool for a particular server.
To troubleshoot any issues with the tool, you can look at the log files on the Windows machine running the App Containerization tool. Tool log files are located atC:\ProgramData\Microsoft Azure Migrate App Containerization\Logs folder.
Was this page helpful?
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Was this page helpful?
Want to try using Ask Learn to clarify or guide you through this topic?