Install Oracle 26ai + APEX 26.2 with Docker
A clean, tested local stack — Oracle AI Database 26ai Free, ORDS 26.3 and APEX 26.2 in official containers — on Windows or Linux. APEX installs itself.
Run the full Oracle stack — Oracle AI Database 26ai Free, ORDS 26.3 and APEX 26.2 — locally in Docker. It's the foundation every other guide builds on.
This guide uses the free companion template, oracle-26ai-apex-docker. It pins the image versions, verifies the APEX download against Oracle's published checksum, and lets the official ORDS container install APEX for you.
Pick your OS — every command block on this page switches with it:
Prerequisites
You need Docker, Git, about 15 GB of free disk and at least 4 GB of RAM for Docker. On Windows, Docker Desktop runs on WSL2.
# Install WSL2 (admin PowerShell; reboot if prompted), then Docker Desktop and Git wsl --install winget install -e --id Docker.DockerDesktop winget install -e --id Git.Git
Check Docker works before you continue:
docker run hello-world
Get access to the Oracle images
Create a free account at container-registry.oracle.com. Open Database → free and Database → ords and accept the licence on each page once. Then log Docker in:
docker login container-registry.oracle.com
You should see Login Succeeded.
Get the template and set passwords
cd $HOME git clone https://github.com/Mohamedhrby/oracle-26ai-apex-docker.git cd oracle-26ai-apex-docker copy .env.example .env notepad .env
Set four passwords in .env: ORACLE_PWD (SYS/SYSTEM), ORDS_PUBLIC_PWD and APEX_PUBLIC_PWD (the accounts ORDS connects with) and APEX_ADMIN_PWD (your APEX admin sign-in). If ports 1521 or 8080 are already in use, change DB_PORT or ORDS_PORT.
⚠ Keep .env on LF line endings
.env.example with LF endings. If your editor converts the file to Windows CRLF, a password can pick up an invisible trailing
. In VS Code, check the LF/CRLF indicator in the status bar before saving.Download APEX 26.2
Docker doesn't ship APEX. This script downloads it from oracle.com, checks it against the SHA256 that Oracle publishes, and unzips it to ./apex:
.\scripts\get-apex.ps1
The full download is about 340 MB and includes every language, which you need for a translated APEX Builder (Arabic, for example). For English only, set APEX_EDITION=en in .env before running it.
Start the stack
docker compose up -d docker compose logs -f ords
The first start downloads about 10 GB of images, starts the database, then lets ORDS install itself and APEX into FREEPDB1. Budget 15-25 minutes after the download finishes. Press Run to see the real log of a healthy first start:
When you see Starting the Oracle REST Data Services instance, press Ctrl+C to stop following the log; the stack keeps running.
Set your APEX admin password
The silent installer that the ORDS container runs gives the APEX instance administrator a fixed password that is printed in Oracle's own image script — so it's effectively public. Replace it with your APEX_ADMIN_PWD:
.\scripts\set-admin-password.ps1
💡 Why this matters
Verify and first sign-in
docker compose ps
Both containers should show healthy. Open http://localhost:8080/ords/apex and sign in to workspace INTERNAL as ADMIN with your APEX_ADMIN_PWD. You'll land on *Welcome to Oracle APEX*. Choose Create Workspace to make your first workspace and schema.
ℹ Connection cheat sheet
localhost · Port 1521 · Service FREEPDB1 · Admin SYSTEM · APEX http://localhost:8080/ords/apex · SQL Developer Web http://localhost:8080/ords/sql-developerConnect from SQLcl or any SQL client:
sql system@//localhost:1521/FREEPDB1
Daily lifecycle
docker compose stop # pause (keeps data) docker compose start # resume docker compose down # remove containers (volumes and data persist) docker compose down -v # full reset: DELETES the database
Try a couple of safe commands yourself:
Upgrading APEX later
When Oracle ships the next APEX release, update the version and checksums at the top of scripts/get-apex.*, run it again, then docker compose restart ords. ORDS sees the newer release in ./apex and upgrades APEX in place. Check that release's required ORDS version first and bump the ORDS image tag if needed.
⚠ This stack is for development
Check your understanding
Check your understanding
0% · 0/3What URL serves APEX after this install?
Which ORDS version does APEX 26.2 require?
Why run set-admin-password after the first start?
That's a complete, verified local Oracle + APEX 26.2 environment. Next: build your first app by chatting with an AI agent.
Need this delivered?
Request a quote