Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Script to create Oracle slim images for all versions #1666

Open
wants to merge 38 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
2dd4a33
Docker scripts files for building 18.0.0.0 RDBMS image
Mar 24, 2018
6dc62ca
fixed listener registration after stop/start container
Apr 11, 2018
ce152f2
Merge remote-tracking branch 'upstream/master'
Aug 19, 2018
935fee3
initial scripts for build 18c-xe docker image
Oct 22, 2018
50ba51e
removed previous build scripts using exadata binary download
Oct 22, 2018
5f81ecf
created oracle user home
Oct 23, 2018
d347ad9
Update OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh
gvenzl Nov 8, 2018
9c8bb56
removed /etc/sysconfig/oracle-xe-18c.conf from dbconfig dir
Nov 8, 2018
ddf7d91
Merge remote-tracking branch 'upstream/master'
Nov 9, 2018
ba382e7
change requested by gerald
Nov 13, 2018
aed988b
use checkDBStatus from 18.3.0 version
Nov 13, 2018
ea3cbd5
use checkDBStatus from 18.0.3 version
Nov 13, 2018
ecbc1c3
fixed file name mapping for 18.4.0 xe Dockerfile
Nov 15, 2018
8f226ea
fixed checkDBStatus.sh scripts with XE image
Nov 20, 2018
3b2c359
Merge remote-tracking branch 'upstream/master'
Nov 20, 2018
36c1567
added missing ] in if check
Nov 23, 2018
0cc0460
Initial build scripts for 19c
Feb 14, 2019
5e37356
merge with base
Apr 26, 2019
b0021fc
Merge remote-tracking branch 'upstream/master'
Apr 27, 2019
bffc5a5
Sample Dockerfiles for using Multipath NFS storage
Apr 27, 2019
e85c174
Merge remote-tracking branch 'upstream/master'
marcelo-ochoa Feb 21, 2020
91824c2
removed comment
marcelo-ochoa Feb 21, 2020
4ce12f3
fixed merged comments
marcelo-ochoa Feb 21, 2020
7319763
layerd version of Dockerfile.xe
marcelo-ochoa Feb 22, 2020
c6998d1
initial impl. multi-layered image, around 1/3 original image
marcelo-ochoa Feb 24, 2020
87c4f2e
initial impl. multi-stage image
marcelo-ochoa Feb 24, 2020
88beb65
added missing link
marcelo-ochoa Feb 24, 2020
33058d6
support for format init-db.tar, init-db.tar.gz and rman compressed ba…
marcelo-ochoa Feb 24, 2020
8ec2574
renamed docker image slim files
marcelo-ochoa Feb 26, 2020
5bdfb53
removed obsoleted build for 19.2
marcelo-ochoa Feb 26, 2020
fee7759
merged with production version of 18.4 XE
marcelo-ochoa Feb 26, 2020
79c59b9
Delete Dockerfile.nfs
marcelo-ochoa Feb 26, 2020
d5cb5e6
Delete Dockerfile.nfs
marcelo-ochoa Feb 26, 2020
7f8b5a6
Delete Dockerfile.nfs
marcelo-ochoa Feb 26, 2020
efd10c0
Merge https://github.com/oracle/docker-images
Jul 11, 2020
60c9706
slim images for all versions
Jul 22, 2020
3a2f840
buildImages.sh script with -l flag
Jul 22, 2020
3bd6d14
rename build script
Feb 24, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# LICENSE UPL 1.0
#
# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved.
#
# ORACLE DOCKERFILES PROJECT
# --------------------------
# This is the Dockerfile for Oracle Database 18c Express Edition
#
# REQUIRED FILES TO BUILD THIS IMAGE
# ----------------------------------
# None
#
# HOW TO BUILD THIS IMAGE
# -----------------------
# Put the downloaded file in the same directory as this Dockerfile
# Run:
# $ docker build -t oracle/database:11.2.0.2-xe-slim -f Dockerfile.slim .
# Sample usage with init-db directory having an RMAN full backup:
# $ docker run -ti --rm --name testdb -v /home/init-db:/opt/oracle/scripts/setup -v /run/shm:/dev/shm oracle/database:11.2.0.2-xe-slim
# passing init-db.tar.gz with a full RMAN backup initial db
# $ docker run -ti --rm --name testdb -v /home/init-db.tar.gz:/opt/oracle/scripts/setup/init-db.tar.gz -v /run/shm:/dev/shm oracle/database:11.2.0.2-xe-slim
#
# Pull base image
# ---------------
FROM oracle/database:11.2.0.2-xe AS db-xe
FROM oraclelinux:7-slim AS baseOS

# Labels
# ------
LABEL "provider"="Oracle" \
"issues"="https://github.com/oracle/docker-images/issues" \
"volume.data"="/u01/app/oracle/oradata" \
"volume.setup.location1"="/u01/app/oracle/scripts/startup" \
"volume.setup.location2"="/docker-entrypoint-initdb.d/setup" \
"volume.startup.location1"="/u01/app/oracle/scripts/setup" \
"volume.startup.location2"="/docker-entrypoint-initdb.d/startup" \
"port.listener"="1521" \
"port.apex"="8080"

# Environment variables required for this build (do NOT change)
# -------------------------------------------------------------
ENV ORACLE_BASE=/u01/app/oracle \
ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe \
ORACLE_SID=XE \
INSTALL_FILE_1="oracle-xe-11.2.0-1.0.x86_64.rpm.zip" \
INSTALL_DIR="$HOME/install" \
CONFIG_RSP="xe.rsp" \
RUN_FILE="runOracle-slim.sh" \
PWD_FILE="setPassword.sh" \
CLR_FILE="cleanup.sh" \
CHECK_DB_FILE="checkDBStatus.sh"

# Use second ENV so that variable get substituted
ENV PATH=$ORACLE_HOME/bin:$PATH

RUN yum -y install unzip libaio bc initscripts net-tools openssl compat-libstdc++-33 && \
rm -rf /var/cache/yum

FROM baseOS AS baseInstall
# Copy Oracle XE installation
# -------------
COPY $CLR_FILE $INSTALL_DIR/

COPY --from=db-xe --chown=root:root /etc/passwd /etc/passwd
COPY --from=db-xe --chown=root:root /etc/group /etc/group
COPY --from=db-xe --chown=root:root /etc/init.d/oracle-xe /etc/init.d/oracle-xe
COPY --from=db-xe --chown=oracle:dba $ORACLE_BASE/ $ORACLE_BASE/

RUN chmod +x $INSTALL_DIR/$CLR_FILE && \
$INSTALL_DIR/$CLR_FILE

FROM baseOS

COPY --from=baseInstall --chown=root:root /etc/passwd /etc/passwd
COPY --from=baseInstall --chown=root:root /etc/group /etc/group
COPY --from=baseInstall --chown=root:root /etc/init.d/oracle-xe /etc/init.d/oracle-xe
COPY --from=baseInstall $ORACLE_BASE/ $ORACLE_BASE/
COPY $RUN_FILE $PWD_FILE $CHECK_DB_FILE $ORACLE_BASE/

RUN mkdir -p /home/oracle && \
chown -R oracle:dba /home/oracle && \
chown oracle:dba $ORACLE_BASE && \
sed -i -r 's/^(session\s+required\s+pam_limits.so)/#\1/' /etc/pam.d/* && \
ln -s $ORACLE_BASE/$PWD_FILE / && \
rm -rf /var/lib/rpm/* && \
rm -rf /var/log/* && \
ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \
cd $HOME && \
chmod ug+x $ORACLE_BASE/*.sh

VOLUME ["$ORACLE_BASE/oradata"]
EXPOSE 1521 8080 5500
HEALTHCHECK --interval=1m --start-period=20m \
CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1

CMD exec $ORACLE_BASE/$RUN_FILE
59 changes: 59 additions & 0 deletions OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/cleanup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/bin/bash

# Remove not needed components
rm -rf $ORACLE_HOME/apex
rm -rf $ORACLE_HOME/jdbc
# ZDLRA installer files
rm -rf $ORACLE_HOME/lib/ra*.zip
rm -rf $ORACLE_HOME/ords
rm -rf $ORACLE_HOME/sqldeveloper
rm -rf $ORACLE_HOME/ucp
# as we won't install patches
rm -rf $ORACLE_HOME/lib/*.a
find $ORACLE_HOME -name '*.a' -type f -delete
# OUI backup
rm -rf $ORACLE_HOME/inventory/backup/*
# Network tools help
rm -rf $ORACLE_HOME/network/tools/help/mgr/help_*
# Temp location
rm -rf /tmp/*
# Advised by Gerald Venzl
echo "Cleanup Advised by Gerald Venzl"
rm -rf $ORACLE_HOME/.patch_storage/*
rm -rf $ORACLE_HOME/R/*
rm -rf $ORACLE_HOME/assistants/*
rm -rf $ORACLE_HOME/cfgtoollogs/*
rm -rf $ORACLE_HOME/dmu/*
rm -rf $ORACLE_HOME/inventory/*
rm -rf $ORACLE_HOME/javavm/*
rm -rf $ORACLE_HOME/md/*
rm -rf $ORACLE_HOME/suptools/*
echo "Additional Cleanup by Jacek Gebal"
#additional cleanup- removes 1.2GB of DB-sources size - for small images only (no Java)
rm -rf $ORACLE_HOME/OPatch/ #OPatch --> Patching
rm -rf $ORACLE_HOME/crs/ #crs --> some clusterware single instance failover things
rm -rf $ORACLE_HOME/ctx/ #ctx --> Oracle Text (also used for JSON index)
rm -rf $ORACLE_HOME/cv/ #cv --> some patchign related stuff I think
rm -rf $ORACLE_HOME/has/ #has --> no clue
rm -rf $ORACLE_HOME/jdk/ #jdk --> Java jdk
rm -rf $ORACLE_HOME/jlib/ #jlib --> Java libraries
rm -rf $ORACLE_HOME/mgw/ #mgw --> Message gateway
rm -rf $ORACLE_HOME/odbc/ #odbc --> ODBC
rm -rf $ORACLE_HOME/olap/ #olap --> OLAP
rm -rf $ORACLE_HOME/ord/ #ord --> Multimedia I think
rm -rf $ORACLE_HOME/oui/ #oui --> Oracle Universal installer
rm -rf $ORACLE_HOME/owm/ #owm --> Workspace manger
rm -rf $ORACLE_HOME/perl/ #perl --> perl
rm -rf $ORACLE_HOME/precomp/ #precomp --> Not much clue either
rm -rf $ORACLE_HOME/sdk/ #sdk --> some more java I believe
rm -rf $ORACLE_HOME/sqlpatch/ #sqlpatch --> patching related stuff
rm -rf $ORACLE_HOME/usm/ #usm --> Universal storage management
rm -rf $ORACLE_HOME/rdbms/admin/cdb_cloud
rm -rf $ORACLE_HOME/rdbms/xml/em
rm -rf $ORACLE_HOME/relnotes
find $ORACLE_HOME -name '*.zip' -type f -delete
find $ORACLE_HOME -name '*.txt' -type f -delete
find $ORACLE_HOME -name '*O' -type f -delete
find $ORACLE_HOME -path '*/install/*' -delete
find $ORACLE_HOME -name 'install' -type d -delete

Loading