This guide provides a full Ansible playbook to deploy JBoss EAP using Docker Compose.
It focuses on RHEL 9+ compatible systems where Red Hat subscription access is available.
- name: Install JBoss EAP with Docker
hosts: jboss
become: true
vars:
jboss_project_dir: /opt/jboss
jboss_image: "registry.redhat.io/jboss-eap-8/eap8-openjdk17-openshift-rhel8"
jboss_container_name: jboss-eap
jboss_host_http_port: 8080
jboss_container_http_port: 8080
jboss_host_mgmt_port: 9990
jboss_container_mgmt_port: 9990
jboss_config_dir: "{{ jboss_project_dir }}/config"
jboss_deployments_dir: "{{ jboss_project_dir }}/deployments"
# Red Hat registry credentials (use Ansible Vault in production)
rh_username: "{{ redhat_username }}"
rh_password: "{{ redhat_password }}"
tasks:
- name: Install Docker prerequisites on RHEL family
dnf:
name:
- dnf-utils
state: present
when: ansible_os_family == "RedHat"
- name: Add Docker repository on RHEL family
yum_repository:
name: docker-ce
description: Docker CE Repository
baseurl: "https://download.docker.com/linux/centos/$releasever/$basearch/stable"
gpgcheck: yes
gpgkey: https://download.docker.com/linux/centos/gpg
when: ansible_os_family == "RedHat"
- name: Install Docker packages on RHEL family
dnf:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-compose-plugin
state: present
when: ansible_os_family == "RedHat"
- name: Enable and start Docker service
systemd:
name: docker
state: started
enabled: true
- name: Log in to Red Hat Container Registry
community.docker.docker_login:
registry_url: registry.redhat.io
username: "{{ rh_username }}"
password: "{{ rh_password }}"
no_log: true
- name: Create JBoss project directory
file:
path: "{{ jboss_project_dir }}"
state: directory
mode: "0755"
- name: Create JBoss config directory
file:
path: "{{ jboss_config_dir }}"
state: directory
mode: "0755"
- name: Create JBoss deployments directory
file:
path: "{{ jboss_deployments_dir }}"
state: directory
mode: "0755"
- name: Create Docker Compose file
copy:
dest: "{{ jboss_project_dir }}/compose.yml"
mode: "0644"
content: |
services:
jboss-eap:
image: {{ jboss_image }}
container_name: {{ jboss_container_name }}
ports:
- "{{ jboss_host_http_port }}:{{ jboss_container_http_port }}"
- "{{ jboss_host_mgmt_port }}:{{ jboss_container_mgmt_port }}"
volumes:
- {{ jboss_config_dir }}:/opt/eap/standalone/configuration
- {{ jboss_deployments_dir }}:/opt/eap/standalone/deployments
restart: unless-stopped
environment:
- TZ=UTC
- LICENSE=accept
- name: Start JBoss EAP container
community.docker.docker_compose_v2:
project_src: "{{ jboss_project_dir }}"
state: present
- name: Verify container is running
community.docker.docker_container_info:
name: "{{ jboss_container_name }}"
register: jboss_container_info
retries: 5
delay: 3
until: jboss_container_info.exists == true
latest.LICENSE=accept environment variable is required to run JBoss EAP containers.After deployment, access JBoss EAP at:
http://SERVER_IP:8080
Admin console:
http://SERVER_IP:9990/console
Copy your WAR/EAR files to the deployments directory:
sudo cp your-app.war /opt/jboss/deployments/
docker logs jboss-eap
cd /opt/jboss
docker compose stop
docker compose start
Any questions?
Feel free to contact us. Find all contact information on our contact page.