-
Notifications
You must be signed in to change notification settings - Fork 74
/
Copy pathDockerfile.1840
124 lines (92 loc) · 4.94 KB
/
Dockerfile.1840
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#
# Since: January, 2021
# Author: gvenzl
# Name: Dockerfile.1840
# Description: Dockerfile to build Oracle DB XE 18.4.0
#
# Copyright 2021 Gerald Venzl
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
FROM oraclelinux:8-slim as builder
ARG BUILD_MODE
ENV ORACLE_BASE=/opt/oracle \
ORACLE_BASE_CONFIG=/opt/oracle/product/18c/dbhomeXE \
ORACLE_BASE_HOME=/opt/oracle/product/18c/dbhomeXE \
ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE \
ORACLE_SID=XE \
PATH=${PATH}:/opt/oracle/product/18c/dbhomeXE/bin:/opt/oracle \
NLS_LANG=.AL32UTF8
COPY oracle-database-xe-18c-1.0-1.x86_64.rpm install.1840.sh container-entrypoint.sh resetPassword createAppUser healthcheck.sh /install/
RUN /install/install.1840.sh "${BUILD_MODE}"
##########################################################################################
### Layer 1 --> Core OS
##########################################################################################
FROM scratch as os_layer
# Redefine environment variables, etc. as we copied everything from an empty image (scratch)
ENV ORACLE_BASE=/opt/oracle \
ORACLE_BASE_CONFIG=/opt/oracle/product/18c/dbhomeXE \
ORACLE_BASE_HOME=/opt/oracle/product/18c/dbhomeXE \
ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE \
ORACLE_SID=XE \
PATH=${PATH}:/opt/oracle/product/18c/dbhomeXE/bin:/opt/oracle \
NLS_LANG=.AL32UTF8
COPY --from=builder / /
RUN rm -rf "${ORACLE_BASE}"
##########################################################################################
### Layer 2 --> Oracle Home without bin/oracle, lib, rdbms, and "${ORACLE_SID}".7z
##########################################################################################
FROM os_layer as oracle_home
COPY --from=builder --chown=oracle:oinstall "${ORACLE_BASE}" "${ORACLE_BASE}"
RUN rm "${ORACLE_HOME}"/bin/oracle
RUN rm -r "${ORACLE_HOME}"/lib
RUN rm -r "${ORACLE_HOME}"/rdbms
RUN rm "${ORACLE_BASE}"/"${ORACLE_SID}".7z
##########################################################################################
### Layer 3 --> Oracle binary (bin/oracle)
##########################################################################################
FROM oracle_home as oracle_binary
COPY --from=builder --chown=oracle:oinstall "${ORACLE_HOME}"/bin/oracle "${ORACLE_HOME}"/bin/oracle
##########################################################################################
### Layer 4 --> Oracle lib
##########################################################################################
FROM oracle_binary as oracle_lib
COPY --from=builder --chown=oracle:oinstall "${ORACLE_HOME}"/lib "${ORACLE_HOME}"/lib
##########################################################################################
### Layer 5 --> Oracle lib
##########################################################################################
FROM oracle_lib as oracle_rdbms
COPY --from=builder --chown=oracle:oinstall "${ORACLE_HOME}"/rdbms "${ORACLE_HOME}"/rdbms
##########################################################################################
### Layer 6 --> Oracle (compressed) db files
##########################################################################################
FROM oracle_rdbms as db_files
COPY --from=builder --chown=oracle:oinstall "${ORACLE_BASE}"/"${ORACLE_SID}".7z "${ORACLE_BASE}"/
##########################################################################################
### Finalize (reset permissions for root owned files, set label, user, etc.)
##########################################################################################
RUN chown root "${ORACLE_HOME}"/bin/extjob; \
chmod 4750 "${ORACLE_HOME}"/bin/extjob; \
chown root "${ORACLE_HOME}"/rdbms/admin/externaljob.ora; \
chmod 640 "${ORACLE_HOME}"/rdbms/admin/externaljob.ora; \
chown root "${ORACLE_HOME}"/bin/jssu; \
chmod 4750 "${ORACLE_HOME}"/bin/jssu
LABEL org.opencontainers.image.title="Oracle Database Express Edition (XE) Container images"
LABEL org.opencontainers.image.description="Oracle Database XE (21c, 18c, 11g) for everyone. Superseded by gvenzl/oracle-free."
LABEL org.opencontainers.image.authors="Gerald Venzl"
LABEL org.opencontainers.image.source=https://github.com/gvenzl/oci-oracle-xe
LABEL org.opencontainers.image.licenses=Apache-2.0
LABEL org.opencontainers.image.documentation=https://github.com/gvenzl/oci-oracle-xe/blob/main/README.md
USER oracle
WORKDIR ${ORACLE_BASE}
HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1
ENTRYPOINT ["container-entrypoint.sh"]