Recently I had to install the patch for fixing cross-platform PDB transport bug onto the docker images with Oracle, so these are easy way how to do it:
1. create directory “patches” and create “install_patches.sh”:
#!/bin/bash
unzip -u ./*.zip
CURDIR=`pwd`
for D in *; do
if [ -d "${D}" ]; then
echo =================================================
echo " *** Processing patch # ${D}... " # your processing here
cd "${D}"
opatch apply -silent
fi
cd $CURDIR
done
2. add the following commands into the dockerfile:
USER root
# Copy DB install file
COPY --chown=oracle:dba patches $INSTALL_DIR/patches
# Install DB software binaries
USER oracle
RUN chmod ug+x $INSTALL_DIR/patches/*.sh && \
sync && \
cd $INSTALL_DIR/patches && \
./install_patches.sh
3. put downloaded patches into the “patches” directory and build image.
For example, dockerfile for 18.3:
FROM oracle/database:18.3.0-ee
MAINTAINER Sayan Malakshinov <sayan@orasql.org>
USER root
# Copy patches:
COPY --chown=oracle:dba patches $INSTALL_DIR/patches
# Install patches:
USER oracle
RUN chmod ug+x $INSTALL_DIR/patches/*.sh && \
sync && \
cd $INSTALL_DIR/patches && \
./install_patches.sh
ps. I’ve also create the request for that in the official Docker github: https://github.com/oracle/docker-images/issues/1070
