1) check out https://github.com/krisrice/docker-ords-sqlcl-apex
2) Download ORDS , SQLcl; optionally APEX
3) Build w/DB connection details
docker build -t krisrice/ords:3.0.10 --build-arg DBHOST=192.168.3.119 --build-arg DBSERVICE=orcl --build-arg DBPORT=1521 --build-arg DBPASSWD=oracle .4) Run the image
docker run -d -p 8888:8888 -p 8443:8443 --name=ords krisrice/ords:3.0.105) Access https://localhost:8433/ords/apex
I started a spot in github for me to adjust a docker build as I need it. There will be an official Oracle one published along side all the existing ones that Tweet to @GeraldVenzl has out on https://github.com/oracle/docker-images
This is where I'll be learning what ords needs out of a docker. https://github.com/krisrice/docker-ords-sqlcl-apex
The Build StructureThis docker is using the docker build arguments for passing in any information needed such as the db connect details to install ORDS and APEX. These are passed one by one with the --build-args X=Y. The initial ones include:
DBHOST : IP Address of the database host DBSERVICE : DB Service name to connect DBPORT : DB Port to connect DBPASSWD : SYS password
These will expand to allow things like custom SSL cert loading, migrate apex REST -> ords REST, conn pool sizes,.... So best to check on the README in the project as I'll keep that up to date.
PORT : HTTP Port for ORDS (Default: 8888) SPORT : HTTPS Port for ORDS (Default: 8443) APEXI : path to the apex images folder INSIDE the doc
The build process itself is a fairly easy to follow bash script. There are a couple notable things in the build ( setupOrds.sh )
- It randomizes the passwords for the ORDS DB accounts used. It does the alter db user then burns the passwords into the ORDS configuration.
- It creates a docroot for serving up any files located at /opt/oracle/ords/doc_root
IF APEX is downloaded, it will install/upgrade the target database. This installs APEX, setups the APEX REST config, and sets the /i/ to the /opt/oracle/apex/images folder so it's ready to go.
Running the Image
There's a couple gotchas I've found running the image.
- Could be my setup but the EXPOSE option in the Dockerfile doesn't work for me to have the ORDS on localhost:8888. This means the -p flag is needed to expose the port inside the docker image to the host machine.
- To run the image in the background simply give a -d
- To get the logs of the image running in the background docker has a nice docker logs <container name> The trouble is the container name is randomly generated unless the --name=<NAME> is used.
docker run -d -p 8888:8888 -p 8443:8443 --name=ords krisrice/ords:3.0.10
IF the APEX is part of the build and is installing/updating, it will take longer than this. Here's about 1 minute from nothing to up and running with ORDS and APEX in this docker image.