Free tools Windows power users keep installed
One-click scans. No signup required.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers VPS plans with one-click Docker, NVMe storage and a 14-day free trial.
The reliable deployment pattern is straightforward: build your Java web application as a WAR file, select a Tomcat image whose Java and Servlet/Jakarta APIs match that application, copy the WAR into the image’s documented deployment directory, build the Docker image, and publish Tomcat’s listening port when you run the container. A Dockerfile’s EXPOSE line documents a port but does not make it reachable from the host.
The commands below are a repeatable local workflow. Image tags, Java versions, WAR locations and Tomcat filesystem paths vary, so verify those details against the documentation for the exact base image and application you use.
The deployment workflow at a glance
Tomcat deploys either an expanded application directory or a packaged WAR. With its default Host configuration, Tomcat uses $CATALINA_BASE/webapps as the application base directory and deploys applications found there during startup. See the Apache Tomcat deployment guide for the documented behavior.
- Build the application with the project’s existing Maven, Gradle or other build process and produce a WAR.
- Confirm the application’s Servlet or Jakarta Servlet target, Java requirement and dependency assumptions.
- Choose a Tomcat base image and tag that satisfy those requirements.
- Place the WAR in the Docker build context and copy it to the deployment directory documented by that image.
- Build an image with
docker build. - Run a container and map a host port to Tomcat’s container port with
-p. - Open the URL that corresponds to the WAR’s context path and inspect logs if startup fails.
This is a static deployment: the artifact is inside the image before Tomcat starts. It is usually the simplest approach for a newly built container.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.
Check compatibility before building anything
Identify what your application actually needs
Record the Java version, Servlet or Jakarta Servlet API level, JSP or Pages requirements, framework version, native libraries and any container-specific settings used by the application. A WAR that was compiled for one API namespace or Java release is not automatically compatible with every Tomcat image.
Tomcat 11.0.27’s documentation identifies Servlet 6.1 and Pages 4.0 as the APIs implemented by that release, according to the Apache documentation index dated October 6, 2026: Tomcat 11.0.27 documentation. That fact does not establish that an unspecified application can run on Tomcat 11. Check the application’s declared APIs and migration requirements instead of selecting the newest release by default.
Choose the image tag deliberately
Docker’s Java guide distinguishes an executable JAR from an application that depends on an application server. For the latter, it directs users to use the relevant server image as the base image and adjust the package filename as needed: Docker’s Java language guide.
Before writing the Dockerfile, verify all of the following for the exact Tomcat image tag:
- The Tomcat major and minor release.
- The Java runtime supplied by the image and whether it meets the application’s minimum and maximum supported versions.
- The directory used as
CATALINA_BASEand its configured HostappBase. - The image’s startup command and whether it expands WAR files automatically.
- Whether the image contains an operating-system package or native library your application requires.
Do not treat an image family’s common filesystem layout as a guarantee. The documented Tomcat default is $CATALINA_BASE/webapps, but a particular image can change environment variables or startup configuration.
Produce and inspect the WAR file
Use the project’s existing build task
Run the build command already defined by the project. Maven projects commonly expose a WAR-producing package lifecycle, while Gradle projects commonly expose a WAR task, but the correct command depends on the project’s plugins, profiles and modules. Do not substitute a generic command if the repository’s build instructions require a profile, generated sources, a frontend build or a particular Java toolchain.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
After the build completes, locate the resulting .war file and note its exact filename. If the Dockerfile will use myapp.war, copy or rename the build output to that filename in the Docker build context. Keep the final artifact at the context root or update the COPY source to match its actual relative path.
Check what will be deployed
A WAR is a ZIP-format archive. You can inspect its top-level directories before building the image to confirm that it contains the expected application classes, libraries and deployment descriptors. Pay particular attention to:
WEB-INF/classesfor compiled application classes.WEB-INF/libfor runtime libraries packaged by the build.- Static files and JSPs expected at the web root.
- Any container configuration that must be supplied separately rather than bundled.
Dependency resolution, database connectivity and external configuration remain application concerns. Copying a valid WAR into Tomcat does not create databases, inject secrets or configure services that the application expects elsewhere.
Write a Dockerfile for the selected image
The Dockerfile reference defines FROM as the base image selection and COPY as the instruction that transfers files from the build context into the image. Docker’s overview explains that docker build uses the Dockerfile and its build context to create the image: Dockerfile reference and Dockerfile overview.
The following pattern keeps the image tag selectable at build time and uses myapp.war as the artifact name. The destination shown is the conventional path used by many Tomcat images; replace it only after checking the selected image’s documentation.
ARG TOMCAT_BASE_IMAGE
FROM ${TOMCAT_BASE_IMAGE}
COPY myapp.war /usr/local/tomcat/webapps/myapp.war
EXPOSE 8080
The ARG before FROM lets you provide a verified image reference without hard-coding an unverified tag into the example. If the image documents a different CATALINA_BASE or appBase, change the COPY destination accordingly. The source file must exist inside the build context; Docker cannot copy a file outside that context.
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
EXPOSE 8080 records that the image is intended to use container port 8080. It does not publish that port to your host. Docker states explicitly that “The EXPOSE instruction doesn’t actually publish the port”: Docker’s Dockerfile reference.
Keep the image build reproducible
- Build from a small context containing the Dockerfile and the intended WAR, rather than sending an entire source tree unnecessarily.
- Add a
.dockerignorefile to exclude build caches, source-control metadata, local logs and credentials. - Pin the base image to a reviewed tag or digest according to your maintenance policy, and document when it should be updated.
- Do not copy local configuration files containing passwords or tokens into the image.
Build the Docker image
From the directory containing the Dockerfile and myapp.war, set an environment variable to the Tomcat image tag you verified, then run:
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsexport TOMCAT_BASE_IMAGE='the-image-tag-you-verified'
docker build
--build-arg TOMCAT_BASE_IMAGE="$TOMCAT_BASE_IMAGE"
-t my-tomcat-app .
The tag my-tomcat-app is only a local example. The final dot is important: it makes the current directory the build context. Docker reads the Dockerfile, sends the context, executes FROM and COPY, and creates an image tagged with the name you supplied.
If the build reports that myapp.war cannot be found, check the filename, capitalization and context directory. If the base image cannot be pulled, verify the image reference, registry access and credentials. If the copy succeeds but Tomcat later shows no application, the destination may not be the image’s actual appBase.
Run the container and publish Tomcat’s port
When Tomcat listens on container port 8080, a typical local run command is:
docker run --rm -p 8080:8080 my-tomcat-app
The first port is on the host; the second is inside the container. You can choose another available host port without changing Tomcat, for example:
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
docker run --rm -p 9090:8080 my-tomcat-app
In that case, the browser uses http://localhost:9090/, while Tomcat still receives traffic on port 8080 inside the container. Docker’s port-publishing documentation describes the hostPort:containerPort mapping and its alternatives: Docker port publishing and mapping.
If the selected image configures Tomcat to listen on another port, use that actual container port in the right-hand side of -p and update the Dockerfile’s EXPOSE line to document the same intent. The mapping does not reconfigure Tomcat; it only forwards traffic to the port on which Tomcat is already listening.
Run in the background when needed
docker run -d --name my-tomcat-app -p 8080:8080 my-tomcat-app
Use docker logs -f my-tomcat-app to follow startup output and docker stop my-tomcat-app to stop the container. The --rm option in the foreground example removes the stopped container automatically; omit it when you need to inspect the stopped container later.
Use the correct application URL
Tomcat derives a context path from the WAR filename under the default deployment conventions. A file named myapp.war normally becomes /myapp, so the application URL is typically http://localhost:8080/myapp/ when port 8080 is mapped directly. The Tomcat Manager documentation covers deployment and context handling: Manager App How-To.
The special filename ROOT.war is used for the root context, producing a URL such as http://localhost:8080/. If you rename the artifact, change the URL you test. A 404 at the server root does not necessarily mean deployment failed; it may mean the application is mounted at a non-root context.
To verify a deployment, check the container logs for Tomcat startup and application deployment messages, then request the expected context path. If the application exposes a health endpoint, use that endpoint rather than assuming the Tomcat welcome page proves that your WAR is working.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
Static deployment versus Manager deployment
Tomcat supports two broad ways to introduce an application. Static deployment places the WAR or expanded directory in the configured application base before startup. Dynamic deployment uses the Manager application to deploy and manage an application on a running server.
| Characteristic | Static deployment in the image | Dynamic deployment through Manager |
|---|---|---|
| When the artifact is introduced | Before the container starts, during the image build. | After Tomcat is running, through Manager operations. |
| Typical container workflow | Build a new image for each application artifact and start a new container. | Keep a running Tomcat instance and submit or manage deployments at runtime. |
| Operational dependency | No Manager application is required merely to start the WAR. | Requires Manager to be installed, reachable and authorized. |
| Automation model | Fits image-based CI/CD and immutable deployment practices. | Fits controlled administrative workflows where runtime deployment is intentional. |
| Main control concern | Protect the image registry, build context and runtime configuration. | Restrict Manager access and credentials to authorized administrators. |
For a single application in a newly built container, Manager is not required. It becomes relevant when an operator deliberately needs runtime deployment or application administration. The Manager guide describes its deployment operations; the appropriate network exposure and authorization policy depend on your environment.
Recommended Free Tools
Troubleshoot the common failures
The container starts, but the application returns 404
- Confirm the WAR was copied into the image by rebuilding without a stale cache when necessary.
- Check the selected image’s documented
appBase; the path in the Dockerfile may not be correct for that image. - Read
docker logsfor deployment errors, failed listeners or class-loading exceptions. - Use the context path derived from the WAR filename, such as
/myapp, rather than assuming the root URL. - If the WAR was intended to be the root application, verify that it is named
ROOT.warand that no other root application is taking precedence.
The host cannot connect
- Check that the container is still running.
- Inspect the published mapping with
docker ps. - Verify that the right-hand side of
-pmatches Tomcat’s actual listening port. - Remember that
EXPOSEis informational; it does not create a host-side listener. - Check local firewall rules or another process already occupying the selected host port.
Tomcat reports missing classes or unsupported APIs
Compare the application’s compiled Java level and Servlet/Jakarta namespace with the Tomcat and Java runtime in the image. A release implementing newer APIs is not automatically backward-compatible with an application that requires a different namespace or container behavior. Select a compatible Tomcat line, rebuild the WAR if necessary, and retest with the application’s supported Java version.
The image builds but deployment fails during startup
- Inspect the complete startup log, including the first stack trace rather than only the final shutdown message.
- Check for missing environment variables, external services and database connectivity.
- Verify file permissions if the image runs Tomcat as a non-root user.
- Look for duplicate libraries or container-provided APIs packaged incorrectly in
WEB-INF/lib. - Confirm that the application’s context configuration does not assume a host filesystem path unavailable inside the container.
Manager deployment is exposed unnecessarily
Remove runtime Manager access if the image-based workflow does not need it. If Manager is required, limit it to authorized administrators and protect its credentials and network path. Deployment administration should not be left broadly reachable simply because the application itself is public.
Version selection and maintenance
Tomcat version choice is a compatibility and maintenance decision, not a race to use the newest number. Compare the application’s required Servlet or Jakarta Servlet and Pages APIs, Java runtime support, framework compatibility, security updates and your organization’s upgrade policy.
The Tomcat 11.0.27 documentation index dated October 6, 2026 records Servlet 6.1 and Pages 4.0 for that release. Use that as a reference point when checking an application that targets those APIs, not as a universal recommendation. If the application was built for an earlier Tomcat generation or a different API namespace, test the migration explicitly.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWhen updating the base image, rebuild the application image and run the same smoke tests. Treat a base-image update as a software change: review release notes, verify startup logs, test the context path and exercise application endpoints before promoting it.
What this basic container does not configure
The WAR-copy workflow gets an application running inside Tomcat; it does not define a complete production platform. TLS termination, reverse-proxy routing, health checks, CPU and memory limits, persistent storage, secrets management, logging retention, backups, orchestration and horizontal scaling must be designed for the target environment.
Keep environment-specific values outside the image where possible, inject secrets through the deployment platform, and define a health check that tests meaningful application readiness rather than only the existence of a Tomcat process. The exact settings depend on your infrastructure and are not determined by the WAR-and-container pattern alone.
Quick Recap
Deployment checklist
- The build produced the intended WAR and the filename is known.
- The application’s Java and Servlet/Jakarta API requirements are documented.
- The selected Tomcat image tag and Java runtime satisfy those requirements.
- The image documentation confirms the deployment directory used by the Dockerfile.
- The Docker build context contains the WAR and excludes credentials and unnecessary files.
- The image builds successfully with a deliberate tag.
- The container publishes the actual Tomcat listening port with
-p. - The test URL uses the WAR-derived context path.
- Container logs show successful Tomcat and application startup.
- Any Manager access is removed or restricted when it is not required.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →

