This guide provides a full Ansible playbook to deploy Oracle WebLogic using Docker Compose.
It targets enterprise Linux deployments where Oracle Container Registry access is available.
- name: Install Oracle WebLogic with Docker
hosts: oracle-weblogic
become: true
vars:
weblogic_project_dir: /opt/oracle-weblogic
weblogic_image: "container-registry.oracle.com/middleware/weblogic:14.1.1.0"
weblogic_container_name: weblogic
weblogic_host_admin_port: 7001
weblogic_container_admin_port: 7001
weblogic_host_ssl_port: 7002
weblogic_container_ssl_port: 7002
weblogic_config_dir: "{{ weblogic_project_dir }}/config"
weblogic_domains_dir: "{{ weblogic_project_dir }}/domains"
weblogic_logs_dir: "{{ weblogic_project_dir }}/logs"
# Oracle registry credentials (use Ansible Vault in production)
oracle_username: "{{ oracle_registry_username }}"
oracle_password: "{{ oracle_registry_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 Oracle Container Registry
community.docker.docker_login:
registry_url: container-registry.oracle.com
username: "{{ oracle_username }}"
password: "{{ oracle_password }}"
no_log: true
- name: Create WebLogic project directory
file:
path: "{{ weblogic_project_dir }}"
state: directory
mode: "0755"
- name: Create WebLogic config directory
file:
path: "{{ weblogic_config_dir }}"
state: directory
mode: "0755"
- name: Create WebLogic domains directory
file:
path: "{{ weblogic_domains_dir }}"
state: directory
mode: "0755"
- name: Create WebLogic logs directory
file:
path: "{{ weblogic_logs_dir }}"
state: directory
mode: "0755"
- name: Create Docker Compose file
copy:
dest: "{{ weblogic_project_dir }}/compose.yml"
mode: "0644"
content: |
services:
weblogic:
image: {{ weblogic_image }}
container_name: {{ weblogic_container_name }}
ports:
- "{{ weblogic_host_admin_port }}:{{ weblogic_container_admin_port }}"
- "{{ weblogic_host_ssl_port }}:{{ weblogic_container_ssl_port }}"
volumes:
- {{ weblogic_config_dir }}:/u01/oracle/user_projects/config
- {{ weblogic_domains_dir }}:/u01/oracle/user_projects/domains
- {{ weblogic_logs_dir }}:/u01/oracle/user_projects/logs
restart: unless-stopped
environment:
- TZ=UTC
- ADMIN_USERNAME=weblogic
- ADMIN_PASSWORD={{ weblogic_admin_password }}
- name: Start Oracle WebLogic container
community.docker.docker_compose_v2:
project_src: "{{ weblogic_project_dir }}"
state: present
- name: Verify container is running
community.docker.docker_container_info:
name: "{{ weblogic_container_name }}"
register: weblogic_container_info
retries: 5
delay: 3
until: weblogic_container_info.exists == true
latest.After deployment, access the WebLogic Admin Console at:
http://SERVER_IP:7001/console
Use the WebLogic Admin Console or WLST to deploy applications:
docker exec weblogic /u01/oracle/user_projects/domains/base_domain/bin/weblogic.sh deploy -adminurl t3://localhost:7001 -adminuser weblogic -password <password> -deploy /path/to/your-app.war
docker logs weblogic
# or
tail -f /opt/oracle-weblogic/logs/AdminServer.log
cd /opt/oracle-weblogic
docker compose stop
docker compose start
Any questions?
Feel free to contact us. Find all contact information on our contact page.