Installing APEX 18.1 in a Docker container

I have APEX 5.1 installed in a docker container, when APEX 18.1 was out I thought about creating a new image, but I have customer applications running on APEX 5.1. Then I saw the idea of Dimitri Gielis about cloning the database and installing APEX on the new environment.  What you will be needing is your existing Oracle 12c image (you can download it from my docker hub).

  1. Oracle 12 image
  2. ORDS 18.1

Clone the database just like Dimitri Gielis is suggesting in his blog.

Create ORDS image from Oracle “docker-images-master” (you can download it from Git)

— copy apex18.1 to docker
docker cp oracle12c:/temp/

— shell to enter the container
docker exec -it oracle bash -c “source /home/oracle/.bashrc; bash”

— install APEX inside the docker container (login as sysdba)


— Run the apex_rest_config command

— before creating the ORDS container make sure that the needed users have no password expired.

alter user APEX_PUBLIC_USER identified by oracle;
alter user APEX_LISTENER identified by oracle;
alter user APEX_REST identified by oracle;

once APEX installation is done, create a new ORDS container from the image.

— create ords container
docker run -t -i \
–name ords \
–network=oracle_network \
-e DB_HOSTNAME=oracle \
-e DB_PORT=1521 \
-e APEX_REST_PASS=oracle \
-e ORDS_PASS=oracle \
-e SYS_PASS=oracle \
–volume /Volumes/HDD/docker/apex/18.1/images:/usr/local/tomcat/webapps/i \
-p 8081:8080 \

I have the old ORDS3 running on 8080, for ORDS18 I’m using 8081.

You are done, You have both APEX versions running side by side. now you can connect to APEX18.1 on localhost:8081/ords

If you have any question, just drop me a message.


Oracle APEX template application

The first setup of an application is always a time consuming activity. To reduce that for all APEX developers I have create a template application with custom login functions.

The package includes all tables and functions you need to up and run you complete APEX application with a few clicks.

You can download the complete app

User the below code to get your own username en password

 l_user_name varchar2(100);
 l_user_pwd varchar2(100);
 l_user_name :='';
 l_user_pwd := APP_SECURITY_PKG.get_hash('','Welcome01');
 UPDATE app_user
 usr_name = l_user_name,
 usr_pwd = l_user_pwd
 usr_id = 1;



Any question? drop a comment.