JBOSS Docker image
This is an example Dockerfile with JBOSS application server.
Adapted from jboss/wildfly.
To boot in standalone mode
docker run -it envris/jboss
To boot in standalone mode with admin console available remotely
docker run -p 8080:8080 -p 9990:9990 -it envris/jboss /opt/jboss/jboss/bin/standalone.sh -bmanagement 0.0.0.0
To boot in domain mode
docker run -it envris/jboss /opt/jboss/jboss/bin/domain.sh -b 0.0.0.0 -bmanagement 0.0.0.0
With the JBOSS server you can deploy your application in multiple ways:
- You can use CLI
- You can use the web console
- You can use the management API directly
- You can use the deployment scanner
The most popular way of deploying an application is using the deployment scanner. In JBOSS this method is enabled by default and the only thing you need to do is to place your application inside of the
deployments/ directory. It can be
/opt/jboss/jboss/domain/deployments/ depending on which mode you choose (standalone is default in the
envris/jboss image -- see above).
The simplest and cleanest way to deploy an application to JBOSS running in a container started from the
envris/jboss image is to use the deployment scanner method mentioned above.
To do this you just need to extend the
envris/jboss image by creating a new one. Place your application inside the
deployments/ directory with the
ADD command (but make sure to include the trailing slash on the deployment folder path, more info). You can also do the changes to the configuration (if any) as additional steps (
A simple example was prepared to show how to do it, but the steps are following:
Dockerfilewith following content:
FROM envris/jboss ADD your-awesome-app.war /opt/jboss/jboss/standalone/deployments/
- Place your
your-awesome-app.warfile in the same directory as your
- Run the build with
docker build --tag=jboss-app .
- Run the container with
docker run -it jboss-app. Application will be deployed on the container boot.
This way of deployment is great because of a few things:
- It utilizes Docker as the build tool providing stable builds
- Rebuilding image this way is very fast (once again: Docker)
- You only need to do changes to the base JBOSS image that are required to run your application
Logging can be done in many ways. This blog post describes a lot of them.
Sometimes you need to customize the application server configuration. There are many ways to do it and this blog post tries to summarize it.
Extending the image
To be able to create a management user to access the administration console create a Dockerfile with the following content
FROM envris/jboss RUN /opt/jboss/jboss/bin/add-user.sh admin Admin#70365 --silent CMD ["/opt/jboss/jboss/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
Then you can build the image:
docker build --tag=envris/jboss-admin .
docker run -it envris/jboss-admin
Administration console will be available on the port
9990 of the container.
Building on your own
You don't need to do this on your own, because we prepared a trusted build for this repository, but if you really want:
docker build --rm=true --tag=envris/jboss .
Image internals [updated Oct 14, 2014]
The server is run as the
jboss user which has the uid/gid set to
JBOSS is installed in the
The source is available on GitHub.