Skip to content

Commit 49b3277

Browse files
authored
Add Oracle Essbase container image (#1959)
1 parent c979e0d commit 49b3277

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2920
-0
lines changed

CODEOWNERS

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
/OracleCoherence/ @thegridman
1212
/OracleDatabase/ @gvenzl
1313
/OracleDatabase/RAC/ @psaini79
14+
/OracleEssbase/ @anilarora
1415
/OracleFMWInfrastructure/ @mriccell
1516
/OracleGoldenGate/ @sbalousek
1617
/OracleHTTPServer/ @Prabhat-Kishore

OracleEssbase/README.md

+132
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
Oracle Essbase Container Images
2+
=============
3+
Sample containers to facilitate installation, configuration, and environment setup for DevOps users. This project includes quick start [dockerfiles](dockerfiles/) for Oracle Essbase 21c based on Oracle Linux 7, Oracle JRE 8 (Server) and Oracle FMW Infrastructure 12.2.1.4.0.
4+
5+
For more information about Oracle Essbase please see the [Oracle Essbase 21c Online Documentation](https://docs.oracle.com/en/database/other-databases/essbase/21/index.html).
6+
7+
The certification of Oracle Essbase on containers does not require the use of any file presented in this repository. Customers and users are welcome to use them as starters, and customize/tweak, or create from scratch new scripts and Dockerfiles.
8+
9+
For pre-built images containing Oracle software, please check the [Oracle Container Registry](https://container-registry.oracle.com).
10+
11+
## Oracle Essbase Container Image Creation
12+
13+
To build the Essbase image either you can start from building Oracle JDK and Oracle Fusion Middleware Infrastrucure image or use the already available Oracle Fusion Middleware Infrastructure image. The Fusion Middleware Infrastructure image is available in the [Oracle Container Registry](https://container-registry.oracle.com), and can be pulled from there. If you plan to use the Oracle Fusion Middleware Infrastructure image from the [Oracle Container Registry](https://container-registry.oracle.com), you can skip the next two steps and continue with "Building the Oracle Essbase Image".
14+
15+
NOTE: If you download the Oracle Fusion Middleware Infrastructure image from the [Oracle Container Registry](https://container-registry.oracle.com) then you need to retag the image with appropriate version. e.g. for the 12.2.1.4.0 version, retag from `container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4` to `oracle/fmw-infrastructure:12.2.1.4`.
16+
17+
```
18+
$ docker tag container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4 oracle/fmw-infrastructure:12.2.1.4
19+
```
20+
21+
### Building the Oracle Java (Server JRE) Image
22+
23+
Please refer [README.md](https://github.com/oracle/docker-images/blob/master/OracleJava/README.md) under docker/OracleJava for details on how to build Oracle Database image.
24+
25+
https://github.com/oracle/docker-images/tree/master/OracleJava/README.md
26+
27+
### Building the Oracle FMW Infrastructure Image
28+
29+
Please refer [README.md](https://github.com/oracle/docker-images/blob/master/OracleFMWInfrastructure/README.md) under docker/OracleFMWInfrastructure for details on how to build Oracle Fusion Middleware Infrastructure image.
30+
31+
### Building the Oracle Essbase Image
32+
33+
IMPORTANT: To build the Oracle Essbase image, you must first download the required version of the Oracle Essbase installer. This installer must be downloaded and copied into the folder with the same version for e.g. 21.1.0.0.0 binaries need to be dropped into `../OracleEssbase/dockerfiles/21.1.0`.
34+
35+
The binaries can be downloaded from the [Oracle Software Delivery Cloud](https://edelivery.oracle.com). Search for "Oracle Essbase" and download the version which is required, e.g. 21.1.0.0.0.
36+
37+
Extract the downloaded zip files and copy the `essbase_211_installer/essbase-21.1.0.0.0-171-linux64.jar` file to `dockerfiles/21.1.0` for building Oracle Essbase 21.1.0 image.
38+
39+
>IMPORTANT: To build the Essbase image with patches, you need to download and drop the patch zip files (for e.g. `p29928100_122134_Generic.zip`) into the `patches/` folder under the version which is required, for e.g. for `21.1.0.0.0` the folder is `21.1.0/patches`. Then run the `buildContainerImage.sh` script as mentioned below:
40+
41+
If a proxy is needed for the host to access yum.oracle.com during build, then first set up the appropriate environment, e.g.:
42+
43+
```
44+
$ export http_proxy=myproxy.example.com:80
45+
$ export https_proxy=myproxy.example.com:80
46+
$ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
47+
```
48+
49+
Build the Oracle Essbase 21.1.0 image using:
50+
51+
```
52+
$ sh buildContainerImage.sh -v 21.1.0
53+
54+
Usage: buildContainerImage.sh -v [version]
55+
Builds a Container Image for Oracle Essbase.
56+
```
57+
58+
Verify you now have the image `oracle/essbase:21.1.0` in place with
59+
60+
```
61+
$ docker images | grep "essbase"
62+
```
63+
64+
If you are building the Essbase image with patches, you can verify the patches applied with:
65+
66+
```
67+
$ docker run oracle/essbase:21.1.0 sh -c '$ORACLE_HOME/OPatch/opatch lspatches'
68+
```
69+
70+
>IMPORTANT: The image created in above step will NOT have a domain pre-configured. But it has the scripts to create and configure a Essbase domain.
71+
72+
## Creating an Oracle Essbase Container
73+
74+
The Essbase image provides a script to create and start a single-node Essbase domain.
75+
76+
This script is invoked when a container is started using the image. If the container is subsequently restarted, then the Essbase domain is restarted automatically.
77+
78+
### Starting a new container
79+
80+
The following environment variables are supported when starting the container:
81+
82+
| Name | Required | Default | Description |
83+
| ---- | -------- | ------- | ----------- |
84+
| DOMAIN_ROOT | | /u01/config/domains | |
85+
| ARBORPATH | | /u01/data/essbase | |
86+
| TMP_DIR | | /u01/tmp | |
87+
| ADMIN_USERNAME | | admin | |
88+
| ADMIN_PASSWORD | | welcome1 | |
89+
| DATABASE_TYPE | | oracle | |
90+
| DATABASE_CONNECT_STRING | | rcu-db:1521/PDBORCL | |
91+
| DATABASE_ADMIN_USERNAME | | sys | |
92+
| DATABASE_ADMIN_PASSWORD | | |
93+
| DATABASE_ADMIN_ROLE | | | If not set, the container will use sysdba if the database type is oracle and the user is 'sys' |
94+
| DATABASE_SCHEMA_PASSWORD | | | If not set, the container will randomly set the value |
95+
| DATABASE_SCHEMA_PREFIX | | ESS1 | |
96+
| DATABASE_SCHEMA_TABLESPACE | | | Tablespace to apply when creating the RCU schemas. If not provided, will use the default for each schema. |
97+
| DATABASE_SCHEMA_TEMP_TABLESPACE | | | Temp tablespace to apply when creating the schemas. If not provided, will use the default for each schema. |
98+
| DATABASE_WAIT_TIMEOUT | | 0 | If set to a non-zero value, the container will wait for up to the provided value for the database to be available. |
99+
| CREATE_SCHEMA | | TRUE | |
100+
| DROP_SCHEMA | | FALSE | |
101+
| ADMIN_SERVER_PORT | | 7001 | Standard listen port of the admin server. This is not the host port. |
102+
| ADMIN_SERVER_SSL_PORT | | 7002 | Standard ssl listen port of the admin server. This is not the host port. |
103+
| ADMIN_SERVER_HOSTNAME_ALIAS | | | Defines the network alias with which to connect to the adminserver. Used for composed environments. |
104+
| MANAGED_SERVER_PORT | | 9000 | Standard listen port for the managed server. This is not the host port. |
105+
| MANAGED_SERVER_SSL_PORT | | 9001 | Standard ssl listen port for the managed server. This is not the host port. |
106+
| ESSBASE_CLUSTER_SIZE | | 1 | Number of managed servers to create in the configuration. |
107+
| MANAGED_SERVER_HOSTNAME_ALIAS | | | Defines the network alias with which to connect to the managed server. Used only at runtime for composed environments to register the "external" hostname for the target server.
108+
| AGENT_PORT | | 1423 | |
109+
| AGENT_SSL_PORT | | 6423 | |
110+
| ESSBASE_SERVER_MIN_PORT | | 30768 | |
111+
| ESSBASE_SERVER_MAX_PORT | | 31768 | |
112+
| ENABLE_EAS | | FALSE | |
113+
| EAS_SERVER_PORT | | 9100 | |
114+
| EAS_SERVER_SSL_PORT | | 9101 | |
115+
| ESSBASE_CFG_OVERRIDES | | /etc/essbase/essbase_overrides.cfg | Specifies an essbase.cfg file mounted in the container to be used to update the runtime essbase.cfg settings during domain creation. |
116+
117+
118+
ORACLE_HOME is fixed to `/u01/oracle`. DOMAIN_NAME is fixed to `essbase_domain`
119+
120+
## Known Issues
121+
122+
1. If the container is restarted, it requires the same set of environment variables passed in again, even though the domain has already been created.
123+
124+
## License
125+
126+
To download and run Oracle Essbase 21c regardless of inside or outside a container, and regardless of the distribution, you must download the binaries from the Oracle website and accept the license indicated on that page.
127+
128+
All scripts and files hosted in this project and GitHub [docker/OracleEssbase](./) repository required to build the container images are, unless otherwise noted, released under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
129+
130+
## Copyright
131+
132+
Copyright (c) 2021, Oracle and/or its affiliates.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
30427d53bc0af3aadde9abb67dafb6b3 essbase-21.1.0.0.0-171-linux64.jar
+126
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
#
2+
# Copyright (c) 2021, Oracle and/or its affiliates.
3+
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
4+
#
5+
6+
#
7+
# Base image
8+
#
9+
ARG FMW_INFRA_IMAGE=oracle/fmw-infrastructure:12.2.1.4
10+
FROM ${FMW_INFRA_IMAGE} as base
11+
12+
# Labels
13+
# ------
14+
LABEL "provider"="Oracle" \
15+
"issues"="https://github.com/oracle/docker-images/issues" \
16+
"maintainer"="Anil Arora <[email protected]>" \
17+
"volume.data"="/u01/data" \
18+
"volume.config"="/u01/config" \
19+
"volume.temp"="/u01/tmp" \
20+
"port.node.manager"="9556" \
21+
"port.admin.server"="7001" \
22+
"port.admin.server.ssl"="7002" \
23+
"port.managed.server"="9000" \
24+
"port.managed.server.ssl"="9001" \
25+
"port.agent"="1423" \
26+
"port.agent.ssl"="6423" \
27+
"port.eas.server"="9100" \
28+
"port.eas.server.ssl"="9101"
29+
30+
USER root
31+
RUN mkdir /u01/config /u01/data /u01/tmp && \
32+
chmod 750 /u01/config /u01/data /u01/tmp && \
33+
chown oracle:oracle /u01/config /u01/data /u01/tmp && \
34+
rm -rf /u01/container-scripts/* && \
35+
rm -rf /u01/oracle/container-scripts
36+
37+
# Essbase Prerequisites
38+
RUN yum install -y gcc gcc-c++ \
39+
libgcc libgcc.i686 \
40+
numactl \
41+
hostname && \
42+
rm -rf /var/cache/yum /var/tmp/yum-root* /var/lib/yum/history /var/log/yum.log
43+
44+
#
45+
# Builder image
46+
#
47+
FROM base as builder
48+
49+
ARG ESSBASE_JAR=essbase-21.1.0.0.0-171-linux64.jar
50+
ENV ESSBASE_JAR=${ESSBASE_JAR}
51+
52+
USER oracle
53+
COPY --chown=oracle:oracle $ESSBASE_JAR install.file /u01/
54+
55+
RUN cd /u01 && \
56+
$JAVA_HOME/bin/java -jar /u01/$ESSBASE_JAR -silent -responseFile /u01/install.file \
57+
-invPtrLoc /u01/oraInst.loc \
58+
-jreLoc $JAVA_HOME \
59+
-ignoreSysPrereqs -force -novalidation \
60+
ORACLE_HOME=$ORACLE_HOME INSTALL_TYPE="Essbase Distribution" && \
61+
rm /u01/${ESSBASE_JAR} /u01/install.file && \
62+
rm -rf ${ORACLE_HOME}/cfgtoollogs && \
63+
rm -rf ${ORACLE_HOME}/.inventory/logs
64+
65+
# Apply Patches
66+
COPY --chown=oracle:oracle patches /u01/patches
67+
RUN chmod +x /u01/patches/apply-patches.sh && \
68+
/u01/patches/apply-patches.sh && \
69+
rm -rf /u01/patches
70+
71+
#
72+
# Final image stage
73+
#
74+
FROM base
75+
76+
ARG ESSBASE_VERSION=21.1.0
77+
RUN mkdir /etc/essbase && \
78+
chmod 755 /etc/essbase && \
79+
echo "Oracle Essbase Container ${ESSBASE_VERSION}" > /etc/essbase/essbase-version-info && \
80+
chmod 644 /etc/essbase/essbase-version-info
81+
82+
83+
# Environment variables required for this build (do NOT change)
84+
# (DOMAIN_NAME/HOME are reset here, to avoid FMW Infra environment leaking through)
85+
# -------------------------------------------------------------
86+
ENV DOMAIN_NAME="${DOMAIN_NAME:-essbase_domain}" \
87+
DOMAIN_ROOT="${DOMAIN_ROOT:-/u01/config/domains}" \
88+
DOMAIN_HOME="${DOMAIN_ROOT:-/u01/config/domains}/${DOMAIN_NAME:-essbase_domain}" \
89+
ARBORPATH="${ARBORPATH:-/u01/data/essbase}" \
90+
TMP_DIR="${TMP_DIR:-/u01/tmp}" \
91+
ADMIN_USERNAME="${ADMIN_USERNAME:-admin}" \
92+
ADMIN_PASSWORD="${ADMIN_PASSWORD:-welcome1}" \
93+
DATABASE_TYPE="${DATABASE_TYPE:-ORACLE}" \
94+
DATABASE_CONNECT_STRING="${DATABASE_CONNECT_STRING:-rcu-db:1521/PDBORCL}" \
95+
DATABASE_ADMIN_USERNAME="${DATABASE_ADMIN_USERNAME:-sys}" \
96+
DATABASE_WAIT_TIMEOUT="${DATABASE_WAIT_TIMEOUT:-0}" \
97+
DATABASE_SCHEMA_PREFIX="${DATABASE_SCHEMA_PREFIX:-ESS1}" \
98+
CREATE_SCHEMA="${CREATE_SCHEMA:-TRUE}" \
99+
DROP_SCHEMA="${DROP_SCHEMA:-FALSE}" \
100+
MACHINE_NAME_PREFIX="${MACHINE_NAME_PREFIX:-essbase_machine}" \
101+
NODE_MANAGER_PORT="${NODE_MANAGER_PORT:-9556}" \
102+
ADMIN_SERVER_PORT="${ADMIN_SERVER_PORT:-7001}" \
103+
ADMIN_SERVER_SSL_PORT="${ADMIN_SERVER_SSL_PORT:-7002}" \
104+
MANAGED_SERVER_PORT="${MANAGED_SERVER_PORT:-9000}" \
105+
MANAGED_SERVER_SSL_PORT="${MANAGED_SERVER_SSL_PORT:-9001}" \
106+
ESSBASE_CLUSTER_SIZE="${ESSBASE_CLUSTER_SIZE:-1}" \
107+
AGENT_PORT="${AGENT_PORT:-1423}" \
108+
AGENT_SSL_PORT="${AGENT_SSL_PORT:-6423}" \
109+
ESSBASE_SERVER_MIN_PORT="${ESSBASE_SERVER_MIN_PORT:-30768}" \
110+
ESSBASE_SERVER_MAX_PORT="${ESSBASE_SERVER_MAX_PORT:-31768}" \
111+
ENABLE_EAS="${ENABLE_EAS:-FALSE}" \
112+
EAS_SERVER_PORT="${EAS_SERVER_PORT:-9100}" \
113+
EAS_SERVER_SSL_PORT="${EAS_SERVER_SSL_PORT:-9101}" \
114+
IDENTITY_PROVIDER="${IDENTITY_PROVIDER:-EMBEDDED}"
115+
116+
USER oracle
117+
COPY --from=builder --chown=oracle:oracle /u01 /u01
118+
COPY --chown=oracle:oracle container-scripts /u01/container-scripts
119+
RUN chmod +x /u01/container-scripts/*.sh
120+
COPY etc /etc
121+
122+
# Healthcheck
123+
HEALTHCHECK --start-period=3m --interval=30s --timeout=30s CMD ["/u01/container-scripts/healthcheck.sh"]
124+
125+
WORKDIR ${ORACLE_HOME}
126+
CMD ["/u01/container-scripts/createAndStartDomain.sh"]

0 commit comments

Comments
 (0)