As a user of the Oracle REST Data Service container image I was interested to see version 26.3.0 appear in the Oracle Container Registry (đŸ”—container-registry.oracle.com). While testing my existing Docker Compose setup, I found a change that affects new installations: the 26.3.0 image requires the ORACLE_USER_PWD environment variable when it installs ORDS for the first time.
The variable name predates this release: the 25.4.0 image logs already mention it. The change in 26.3.0 is that you must now provide it for a new installation. By default, its value is used for the ORDS administrative and runtime accounts. You can also provide it through a readable secret file at /run/secrets/ORACLE_USER_PWD.
As per the docs:
Parameters:[...]-e ORACLE_USER_PWD: Required for a new ORDS installation. By default, it is used for the ORDS administrative and runtime accounts. It can also be supplied through the readable Docker secret file /run/secrets/ORACLE_USER_PWD.[...]
Add the variable to your ORDS (compose) service; here’s the Docker Compose file I use. Remember this is a lab setup, not a production configuration. It uses ORDS 26.3.0; check the registry for newer image tags for both ORDS and the database when you read this.
# THIS IS NOT A PRODUCTION SETUP - LAB USE ONLY!services: oracle: image: docker.io/gvenzl/oracle-free:23.26.3 ports: - 1521:1521 environment: ORACLE_PASSWORD: ${ORACLE_PASSWORD:?Please provide a password for the Oracle DBA accounts} APP_USER: demouser APP_USER_PASSWORD: ${APP_USER_PASSWORD:?Please provide a password for the application user} volumes: - oradata-vol:/opt/oracle/oradata - ./initialisation:/container-entrypoint-initdb.d networks: - backend healthcheck: test: ["CMD", "/opt/oracle/healthcheck.sh"] interval: "10s" timeout: "5s" retries: 10 start_period: "5s" start_interval: "5s" ords: depends_on: oracle: condition: service_healthy image: container-registry.oracle.com/database/ords:26.3.0 environment: DBHOST: "oracle" DBPORT: 1521 DBSERVICENAME: "freepdb1" ORACLE_PWD: ${ORACLE_PASSWORD:?Please provide a password for the Oracle DBA accounts} ORACLE_USER_PWD: ${ORACLE_USER_PWD:?Please provide a password for the ORDS administrative and runtime accounts} DEBUG: "FALSE" networks: - backend ports: - 8080:8080 # ORDS http - 8443:8443 # ORDS https - 27017:27017 # Mongo DB API volumes: - ords-config-vol:/etc/ords/config # this docker volume contains the ORDS config - ./apex:/opt/oracle/apex # use this volume mount for an automatic APEX installation healthcheck: test: curl --noproxy "localhost" -f -k http://localhost:8080/ords/ || exit 1 interval: 30s timeout: 10s retries: 5volumes: oradata-vol: ords-config-vol:networks: backend:
The start_interval setting requires Docker Compose 2.20.2 or later. Depending on your SELinux settings etc, Podman users may have to adjust the volume mounts to allow the oracle user to access the files in the respective directories.
Please refer to the documentation for more information about each images environment variables:
Happy automating!