The stack runs both WildFly and JBoss EAP simultaneously in separate containers. WildFly is the modern Jakarta EE 9+ server; JBoss EAP (backed by an older WildFly 20 base image) provides legacy application support. Running both side-by-side is the core value proposition for teams migrating from JBoss to WildFly: you can deploy the same application to both servers, compare runtime behavior, and gradually cut over to WildFly without removing the JBoss safety net until you are confident.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/infra-neo/CICD/llms.txt
Use this file to discover all available pages before exploring further.
Quick Reference
| Property | WildFly | JBoss EAP |
|---|---|---|
| HTTP Port | 8090 | 8070 |
| Admin Port | 9990 | 9970 |
| Container Name | wildfly | jboss |
| Image | quay.io/wildfly/wildfly:latest | jboss/wildfly:20.0.1.Final |
| Default Credentials | admin / admin | admin / admin |
| Deployment Directory | /opt/jboss/wildfly/standalone/deployments | /opt/jboss/wildfly/standalone/deployments |
| User Env Var | WILDFLY_USER | JBOSS_USER |
| Pass Env Var | WILDFLY_PASS | JBOSS_PASS |
0.0.0.0 for both HTTP and management interfaces:
Configuring Admin Users
setup.sh runs add-user.sh inside both containers immediately after they start, creating the admin management user silently:
add-user.sh will print a warning but exit cleanly — this is expected behavior and does not affect operation.
Deploying Applications
- Manual (docker cp)
- Maven Plugin
- Pipeline (Jenkinsfile.enhanced)
Copy a WAR file directly into the deployments directory. WildFly and JBoss both use file-system deployment scanning — dropping a file into the deployments directory triggers automatic deployment within seconds.The server writes a marker file (
.deployed, .failed, or .isdeploying) alongside the WAR to signal deployment status. Check for these markers after copying to confirm success.Checking Deployment Status
After a WAR is placed in the deployments directory, WildFly and JBoss write marker files to indicate the deployment lifecycle stage:| Marker File | Meaning |
|---|---|
myapp.war.isdeploying | Deployment in progress |
myapp.war.deployed | Successfully deployed and running |
myapp.war.failed | Deployment failed — inspect server logs |
myapp.war.undeployed | Application was undeployed |
.failed marker, inspect its contents for the error message and check the full server log:
Environment Variables
The following environment variables are defined indocker-compose.yml for each server:
WILDFLY_USER/WILDFLY_PASS and JBOSS_USER/JBOSS_PASS are available inside the respective containers and can be referenced in startup scripts or health-check commands. Change these values in docker-compose.yml (or a docker-compose.override.yml) before exposing the management consoles.
JVM Memory Configuration
Both servers inheritJAVA_OPTS from the container environment. The default docker-compose.yml does not set JAVA_OPTS explicitly, which means the JVM uses its default heap sizing (typically 25% of container memory for -Xms, 50% for -Xmx).
For fine-grained control, set JAVA_OPTS in docker-compose.yml or in your override file:
build-config.yml App Server Settings
Thebuild-config.yml file exposes an appserver section that both the standard Jenkinsfile and the enhanced pipeline read to determine default deployment targets and server URLs:
type to wildfly or jboss to establish the default target when the pipeline is not run with explicit parameters.
Volumes
Each server has three dedicated Docker volumes that persist data across container restarts:| Volume | Mount Path | Purpose |
|---|---|---|
wildfly_deployments | /opt/jboss/wildfly/standalone/deployments | Deployed WAR/EAR files and marker files |
wildfly_data | /opt/jboss/wildfly/standalone/data | Runtime persistent data (Infinispan caches, etc.) |
wildfly_config | /opt/jboss/wildfly/standalone/configuration | standalone.xml and configuration files |
jboss_deployments | /opt/jboss/wildfly/standalone/deployments | Same structure for the JBoss container |
jboss_data | /opt/jboss/wildfly/standalone/data | JBoss runtime data |
jboss_config | /opt/jboss/wildfly/standalone/configuration | JBoss configuration files |
standalone.xml overlays, and environment-specific resources in ./config/wildfly/ and reference them from within the container at /etc/wildfly-config/.
Troubleshooting
Application won't deploy — WAR was copied but nothing is running
Application won't deploy — WAR was copied but nothing is running
- Check for a
.failedmarker file in the deployments directory: - Look at the WildFly server log for the deployment error:
- Common causes include missing datasource references, incompatible Jakarta EE API versions, or class loading conflicts. Fix the application and redeploy by copying the updated WAR.
- To force a fresh deployment, delete the WAR and all marker files, then recopy:
Performance degradation — application is slow or timing out
Performance degradation — application is slow or timing out
The most common cause is insufficient JVM heap. Check current memory usage:Increase the heap allocation in Then restart the container:Also check whether the deployment directory volume is full or if the host machine is under disk I/O pressure.
docker-compose.yml or your override file:Database connection fails — datasource cannot connect
Database connection fails — datasource cannot connect
Verify the datasource configuration by checking:
- The database host and port are reachable from inside the WildFly container:
- Environment variables for datasource credentials are passed correctly via
docker-compose.yml: - The
standalone.xmldatasource definition references the correct JNDI name and uses the matching environment variables. - Check the WildFly management console at
http://localhost:9990for datasource health under Configuration → Subsystems → Datasources.
'Admin user already exists' error from setup.sh
'Admin user already exists' error from setup.sh
This is safe to ignore. The message appears when No corrective action is needed.
setup.sh runs add-user.sh and the admin account was already created from a previous run (the wildfly_config and jboss_config volumes persisted across a docker compose down without -v). The existing user and its credentials are unchanged. The setup.sh script catches this with:For a complete step-by-step guide on migrating applications from JBoss EAP to WildFly — including API compatibility analysis, configuration migration, and deployment verification — see /operations/migration-guide.
