Skip to content

Commit b0f1ec5

Browse files
gosurya-oracleddsharpe
authored andcommitted
multi-stage build
1 parent 3b6121e commit b0f1ec5

File tree

5 files changed

+165
-66
lines changed

5 files changed

+165
-66
lines changed

src/main/java/com/oracle/weblogicx/imagebuilder/cli/menu/ImageOperation.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ List<String> handlePatchFiles(Path tmpDir, Path tmpPatchesDir) throws Exception
125125
retVal.add(BUILD_ARG);
126126
retVal.add("PATCHDIR=" + tmpDir.relativize(tmpPatchesDir).toString());
127127
filterStartTags.add("PATCH_");
128+
if (this instanceof CreateImage) {
129+
filterStartTags.add("CREATE_PATCH_");
130+
} else if (this instanceof UpdateImage) {
131+
filterStartTags.add("UPDATE_PATCH_");
132+
}
128133
}
129134
return retVal;
130135
}
@@ -137,7 +142,7 @@ List<String> handlePatchFiles(Path tmpDir, Path tmpPatchesDir) throws Exception
137142
List<String> getInitialBuildCmd() {
138143

139144
List<String> cmdBuilder = Stream.of("docker", "build",
140-
"--squash", "--force-rm", "--rm=true", "--no-cache").collect(Collectors.toList());
145+
"--force-rm", "--rm=true", "--no-cache").collect(Collectors.toList());
141146

142147
cmdBuilder.add("--tag");
143148
cmdBuilder.add(imageTag);
@@ -174,6 +179,11 @@ void addOPatch1394ToImage(Path tmpDir) throws Exception {
174179
String filePath = new PatchFile(useCache, "opatch", "13.9.4.0.0", "28186730", userId, password).resolve(cacheStore);
175180
Files.copy(Paths.get(filePath), Paths.get(tmpDir.toAbsolutePath().toString(), new File(filePath).getName()));
176181
filterStartTags.add("OPATCH_1394");
182+
if (this instanceof CreateImage) {
183+
filterStartTags.add("CREATE_OPATCH_1394");
184+
} else if (this instanceof UpdateImage) {
185+
filterStartTags.add("UPDATE_OPATCH_1394");
186+
}
177187
}
178188

179189
/**

src/main/resources/docker-files/Dockerfile.create

Lines changed: 80 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,37 @@
55
#
66
#
77
ARG BASE_IMAGE=oraclelinux:7-slim
8-
FROM ${BASE_IMAGE} as WLS_BUILD
8+
FROM ${BASE_IMAGE} as OS_UPDATE
99
USER root
1010

11+
#RUN mkdir -p $OTMPDIR
12+
13+
# PLACEHOLDER FOR %%PKG_INSTALL%% #
14+
15+
## Create oracle user
16+
RUN if [ -z "$(getent group oracle)" ]; then hash groupadd &> /dev/null && groupadd -g 1000 oracle || exit -1 ; fi \
17+
&& if [ -z "$(getent passwd oracle)" ]; then hash useradd &> /dev/null && useradd -u 1100 -g oracle oracle || exit -1; fi \
18+
&& mkdir /u01 \
19+
&& chown oracle:oracle /u01
20+
21+
FROM OS_UPDATE as JDK_BUILD
1122
ARG JAVA_PKG
23+
ARG JAVA_HOME=/u01/jdk
24+
ARG OTMPDIR
25+
26+
ENV JAVA_PKG=${JAVA_PKG:-server-jre-*-linux-x64.tar.gz} \
27+
JAVA_HOME=${JAVA_HOME:-/u01/jdk} \
28+
OTMPDIR=${OTMPDIR:-/tmp/delme}
29+
30+
COPY --chown=oracle:oracle $JAVA_PKG $OTMPDIR/
31+
32+
USER oracle
33+
34+
RUN tar xzvf $OTMPDIR/$JAVA_PKG -C /u01 \
35+
&& mv /u01/jdk* $JAVA_HOME \
36+
&& rm -rf $OTMPDIR
37+
38+
FROM OS_UPDATE as WLS_BUILD
1239
ARG WLS_PKG
1340
ARG JAVA_HOME=/u01/jdk
1441
ARG INV_LOC
@@ -17,10 +44,8 @@ ARG ORACLE_HOME=/u01/oracle
1744
ARG ORAINST
1845
ARG OTMPDIR
1946
ARG PATCHDIR
20-
# PLACEHOLDER FOR %%WDT_ARGS%% #
2147

22-
ENV JAVA_PKG=${JAVA_PKG:-server-jre-*-linux-x64.tar.gz} \
23-
WLS_PKG=${WLS_PKG:-fmw_12.2.1.3.0_wls_Disk1_1of1.zip} \
48+
ENV WLS_PKG=${WLS_PKG:-fmw_12.2.1.3.0_wls_Disk1_1of1.zip} \
2449
JAVA_HOME=${JAVA_HOME:-/u01/jdk} \
2550
ORACLE_HOME=${ORACLE_HOME:-/u01/oracle} \
2651
INV_LOC=${INV_LOC:-/u01/oracle/oraInventory} \
@@ -30,40 +55,66 @@ ENV JAVA_PKG=${JAVA_PKG:-server-jre-*-linux-x64.tar.gz} \
3055
OPATCH_NO_FUSER=true \
3156
PATCHDIR=${PATCHDIR:-patches}
3257

33-
# PLACEHOLDER FOR %%WDT_ENV%% #
58+
# Install base WLS
59+
COPY --from=JDK_BUILD --chown=oracle:oracle $JAVA_HOME $JAVA_HOME/
60+
COPY --chown=oracle:oracle $WLS_PKG $WLS_RESP $OTMPDIR/
61+
COPY --chown=oracle:oracle $ORAINST $INV_LOC/
62+
# PLACEHOLDER FOR %%OPATCH_1394_COPY%% #
63+
# PLACEHOLDER FOR %%PATCH_APPLY_COPY%% #
3464

35-
# PLACEHOLDER FOR %%PKG_INSTALL%% #
65+
USER oracle
3666

37-
#RUN if [ -z "$(getent group oracle)" ]; then hash groupadd &> /dev/null && groupadd -g 1000 oracle || addgroup -g 1000 oracle ; fi \
38-
# && if [ -z "$(getent passwd oracle)" ]; then hash useradd &> /dev/null && useradd -u 1100 -g oracle oracle || adduser -D -u 1100 -G oracle oracle; fi \
67+
RUN unzip $OTMPDIR/$WLS_PKG -d $OTMPDIR \
68+
&& $JAVA_HOME/bin/java -Xmx1024m -jar $OTMPDIR/fmw_*.jar -silent ORACLE_HOME=$ORACLE_HOME \
69+
-responseFile $OTMPDIR/$WLS_RESP -invPtrLoc $INV_LOC/$ORAINST -novalidation \
70+
# PLACEHOLDER FOR %%CREATE_OPATCH_1394%% #
71+
# PLACEHOLDER FOR %%CREATE_PATCH_APPLY%% #
72+
&& rm -rf $JAVA_HOME $OTMPDIR
3973

40-
## Create oracle user
41-
RUN if [ -z "$(getent group oracle)" ]; then hash groupadd &> /dev/null && groupadd -g 1000 oracle || exit -1 ; fi \
42-
&& if [ -z "$(getent passwd oracle)" ]; then hash useradd &> /dev/null && useradd -u 1100 -g oracle oracle || exit -1; fi
43-
# && mkdir -p $ORACLE_HOME \
44-
# && mkdir -p $INV_LOC \
45-
# && chown -R oracle:oracle /u01/ \
46-
# && chown -R oracle:oracle $OTMPDIR/
74+
# PLACEHOLDER FOR %%WDT_INSTALL%% #
4775

48-
USER oracle
76+
FROM ${BASE_IMAGE} as FINAL_BUILD
4977

50-
# Install base WLS
51-
COPY --chown=oracle:oracle $JAVA_PKG $WLS_PKG $WLS_RESP $OTMPDIR/
52-
COPY --chown=oracle:oracle $ORAINST $INV_LOC/
78+
ARG JAVA_HOME=/u01/jdk
79+
ARG ORACLE_HOME=/u01/oracle
80+
ARG DOMAIN_NAME
81+
ARG DOMAIN_PARENT
82+
ARG ADMIN_NAME
83+
ARG ADMIN_HOST
84+
ARG ADMIN_PORT
85+
ARG MANAGED_SERVER_PORT
5386

54-
RUN tar xzvf $OTMPDIR/$JAVA_PKG -C /u01 \
55-
&& mv /u01/jdk* $JAVA_HOME \
56-
&& unzip $OTMPDIR/$WLS_PKG -d $OTMPDIR \
57-
&& $JAVA_HOME/bin/java -Xmx1024m -jar $OTMPDIR/fmw_*.jar -silent ORACLE_HOME=$ORACLE_HOME \
58-
-responseFile $OTMPDIR/$WLS_RESP -invPtrLoc $INV_LOC/$ORAINST -novalidation \
59-
&& rm -rf $OTMPDIR
87+
ENV ORACLE_HOME=${ORACLE_HOME} \
88+
JAVA_HOME=${JAVA_HOME} \
89+
ADMIN_NAME=${ADMIN_NAME:-admin-server} \
90+
ADMIN_HOST=${ADMIN_HOST:-wlsadmin} \
91+
ADMIN_PORT=${ADMIN_PORT:-7001} \
92+
MANAGED_SERVER_NAME=${MANAGED_SERVER_NAME:-} \
93+
MANAGED_SERVER_PORT=${MANAGED_SERVER_PORT:-8001} \
94+
WLSDEPLOY_PROPERTIES="-Djava.security.egd=file:/dev/./urandom" \
95+
DOMAIN_PARENT=${DOMAIN_PARENT:-/u01/domains} \
96+
DOMAIN_NAME=${DOMAIN_NAME:-base_domain} \
97+
LC_ALL=${DEFAULT_LOCALE:-en_US.UTF-8} \
98+
PROPERTIES_FILE_DIR=$ORACLE_HOME/properties
6099

61-
# PLACEHOLDER FOR %%OPATCH_1394%% #
100+
# DO NOT COMBINE THESE BLOCKS. It won't work when formatting variables like DOMAIN_HOME
101+
ENV DOMAIN_HOME=${DOMAIN_PARENT}/${DOMAIN_NAME} \
102+
PROPERTIES_FILE_DIR=$ORACLE_HOME/properties \
103+
PATH=$PATH:${JAVA_HOME}/bin:${ORACLE_HOME}/oracle_common/common/bin:${ORACLE_HOME}/wlserver/common/bin:${DOMAIN_PARENT}/${DOMAIN_NAME}:${DOMAIN_PARENT}/${DOMAIN_NAME}/bin:${ORACLE_HOME}
62104

63-
# PLACEHOLDER FOR %%PATCH_APPLY%% #
105+
## Create oracle user
106+
RUN if [ -z "$(getent group oracle)" ]; then hash groupadd &> /dev/null && groupadd -g 1000 oracle || exit -1 ; fi \
107+
&& if [ -z "$(getent passwd oracle)" ]; then hash useradd &> /dev/null && useradd -u 1100 -g oracle oracle || exit -1; fi \
108+
&& mkdir -p $(dirname $JAVA_HOME) $(dirname $ORACLE_HOME) $(dirname $DOMAIN_HOME) \
109+
&& chown oracle:oracle $(dirname $JAVA_HOME) $(dirname $ORACLE_HOME) $(dirname $DOMAIN_HOME)
64110

65-
# PLACEHOLDER FOR %%WDT_INSTALL%% #
111+
COPY --from=JDK_BUILD --chown=oracle:oracle $JAVA_HOME $JAVA_HOME/
112+
COPY --from=WLS_BUILD --chown=oracle:oracle $ORACLE_HOME $ORACLE_HOME/
113+
# PLACEHOLDER FOR %%WDT_COPY_DOMAIN%% #
66114

67-
# PLACEHOLDER FOR %%WDT_CMD%% #
115+
USER oracle
116+
WORKDIR $ORACLE_HOME
68117

118+
# PLACEHOLDER FOR %%WDT_CMD%% #
119+
#ENTRYPOINT /bin/bash
69120

src/main/resources/docker-files/Dockerfile.ph

Lines changed: 68 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
#
66
# This file is not a fully functional Dockerfile. Do not use this directly.
77

8-
# START %%WDT_ARGS%% #
8+
# START %%WDT_INSTALL%% #
9+
FROM OS_UPDATE as WDT_BUILD
10+
11+
ARG JAVA_HOME=/u01/jdk
12+
ARG ORACLE_HOME=/u01/oracle
913
ARG WDT_PKG
1014
ARG WDT_MODEL
1115
ARG DOMAIN_TYPE
@@ -21,9 +25,9 @@ ARG MANAGED_SERVER_PORT
2125
ARG SCRIPTS_DIR
2226
ARG WDT_HOME
2327
ARG RCU_RUN_FLAG
24-
# END %%WDT_ARGS%% #
2528

26-
# START %%WDT_ENV%% #
29+
RUN echo ${WLS_PKG} ${JAVA_PKG} ${WDT_MODEL}
30+
2731
ENV WDT_PKG=${WDT_PKG:-weblogic-deploy.zip} \
2832
ADMIN_NAME=${ADMIN_NAME:-admin-server} \
2933
ADMIN_HOST=${ADMIN_HOST:-wlsadmin} \
@@ -39,21 +43,22 @@ ENV WDT_PKG=${WDT_PKG:-weblogic-deploy.zip} \
3943
WDT_VARIABLE=${WDT_VARIABLE:-} \
4044
LC_ALL=${DEFAULT_LOCALE:-en_US.UTF-8} \
4145
PROPERTIES_FILE_DIR=$ORACLE_HOME/properties \
42-
SCRIPT_HOME="${ORACLE_HOME}" \
4346
WDT_HOME=${WDT_HOME:-/u01/app/weblogic-deploy} \
4447
SCRIPTS_DIR=${SCRIPTS_DIR:-scripts} \
4548
RCU_RUN_FLAG=${RCU_RUN_FLAG:-}
4649

4750
# DO NOT COMBINE THESE BLOCKS. It won't work when formatting variables like DOMAIN_HOME
4851
ENV DOMAIN_HOME=${DOMAIN_PARENT}/${DOMAIN_NAME} \
52+
SCRIPT_HOME=${DOMAIN_PARENT}/${DOMAIN_NAME} \
4953
PATH=$PATH:${JAVA_HOME}/bin:${ORACLE_HOME}/oracle_common/common/bin:${ORACLE_HOME}/wlserver/common/bin:${DOMAIN_PARENT}/${DOMAIN_NAME}:${DOMAIN_PARENT}/${DOMAIN_NAME}/bin:${ORACLE_HOME}
5054

51-
# END %%WDT_ENV%% #
52-
53-
# START %%WDT_INSTALL%% #
55+
COPY --from=JDK_BUILD --chown=oracle:oracle $JAVA_HOME $JAVA_HOME/
56+
COPY --from=WLS_BUILD --chown=oracle:oracle $ORACLE_HOME $ORACLE_HOME/
5457
COPY --chown=oracle:oracle ${WDT_PKG} ${WDT_MODEL} ${WDT_ARCHIVE} ${WDT_VARIABLE} ${OTMPDIR}/
5558
COPY --chown=oracle:oracle ${SCRIPTS_DIR}/*.sh ${SCRIPT_HOME}/
5659

60+
USER oracle
61+
5762
RUN unzip $OTMPDIR/$WDT_PKG -d $(dirname $WDT_HOME) \
5863
&& chmod a+x $SCRIPT_HOME/*.sh \
5964
&& mkdir -p $(dirname ${DOMAIN_HOME}) \
@@ -73,62 +78,100 @@ RUN unzip $OTMPDIR/$WDT_PKG -d $(dirname $WDT_HOME) \
7378
$MODEL_OPT \
7479
$ARCHIVE_OPT \
7580
&& chmod -R a+x ${DOMAIN_HOME}/bin/*.sh \
76-
&& rm -rf ${WDT_HOME} $OTMPDIR
81+
&& rm -rf ${JAVA_HOME} ${ORACLE_HOME} ${WDT_HOME} $OTMPDIR
7782

7883
# END %%WDT_INSTALL%% #
7984

8085
# START %%WDT_CMD%% #
8186
# Expose admin server, managed server port
8287
EXPOSE $ADMIN_PORT $MANAGED_SERVER_PORT
83-
CMD ["sh", "-c", "${SCRIPT_HOME}/startAdminServer.sh"]
88+
CMD ["sh", "-c", "${DOMAIN_HOME}/startAdminServer.sh"]
8489

8590
# END %%WDT_CMD%% #
8691

87-
# START %%OPATCH_1394%% #
92+
# START %%WDT_COPY_DOMAIN%% #
93+
COPY --from=WDT_BUILD --chown=oracle:oracle $DOMAIN_HOME $DOMAIN_HOME/
94+
# END %%WDT_COPY_DOMAIN%% #
95+
96+
# START %%OPATCH_1394_COPY%% #
8897
COPY --chown=oracle:oracle p28186730_139400_Generic.zip $OTMPDIR/opatch/
98+
# END %%OPATCH_1394_COPY%% #
8999

100+
# START %%CREATE_OPATCH_1394%% #
101+
&& cd $OTMPDIR/opatch \
102+
&& $JAVA_HOME/bin/jar -xf $OTMPDIR/opatch/p28186730_139400_Generic.zip \
103+
&& $JAVA_HOME/bin/java -jar $OTMPDIR/opatch/6880880/opatch_generic.jar -silent oracle_home=$ORACLE_HOME \
104+
# END %%CREATE_OPATCH_1394%% #
105+
106+
# START %%UPDATE_OPATCH_1394%% #
90107
RUN cd $OTMPDIR/opatch \
91-
&& jar -xf $OTMPDIR/opatch/p28186730_139400_Generic.zip \
108+
&& $JAVA_HOME/bin/jar -xf $OTMPDIR/opatch/p28186730_139400_Generic.zip \
92109
&& $JAVA_HOME/bin/java -jar $OTMPDIR/opatch/6880880/opatch_generic.jar -silent oracle_home=$ORACLE_HOME \
93110
&& rm -rf $OTMPDIR
111+
# END %%UPDATE_OPATCH_1394%% #
94112

95-
# END %%OPATCH_1394%% #
96-
97-
# START %%PATCH_APPLY%% #
113+
# START %%PATCH_APPLY_COPY%% #
98114
COPY --chown=oracle:oracle $PATCHDIR/* $OTMPDIR/patches/
115+
# END %%PATCH_APPLY_COPY%% #
99116

117+
# START %%CREATE_PATCH_APPLY%% #
118+
&& $ORACLE_HOME/OPatch/opatch napply -silent -oh $ORACLE_HOME -phBaseDir $OTMPDIR/patches \
119+
&& $ORACLE_HOME/OPatch/opatch util cleanup -silent -oh $ORACLE_HOME \
120+
# END %%CREATE_PATCH_APPLY%% #
121+
122+
# START %%UPDATE_PATCH_APPLY%% #
100123
RUN $ORACLE_HOME/OPatch/opatch napply -silent -oh $ORACLE_HOME -phBaseDir $OTMPDIR/patches \
101124
&& $ORACLE_HOME/OPatch/opatch util cleanup -silent -oh $ORACLE_HOME \
102125
&& rm -rf $OTMPDIR
103-
# END %%PATCH_APPLY%% #
126+
# END %%UPDATE_PATCH_APPLY%% #
104127

105128
# START %%PKG_INSTALL%%_YUM #
106-
# install necessary packages
107-
RUN yum -y update \
108-
&& yum -y install gzip tar unzip \
109-
&& yum clean all
129+
RUN yum -y --downloaddir=$OTMPDIR install gzip tar unzip \
130+
&& yum -y --downloaddir=$OTMPDIR clean all \
131+
&& rm -rf $OTMPDIR
110132
# END %%PKG_INSTALL%%_YUM #
111133

112134
# START %%PKG_INSTALL%%_APT #
113-
# install necessary packages
114135
RUN apt-get -y update \
115136
&& apt-get -y upgrade \
116-
&& apt-get -y install tar unzip \
137+
&& apt-get -y install gzip tar unzip \
117138
&& apt-get -y clean all
118139
# END %%PKG_INSTALL%%_APT #
119140

120141
# START %%PKG_INSTALL%%_APK #
121-
# install necessary packages
122142
RUN apk update \
123143
&& apk upgrade \
124-
&& apk add tar unzip \
144+
&& apk add gzip tar unzip \
125145
&& rm -rf /var/cache/apk/*
126146
# END %%PKG_INSTALL%%_APK #
127147

128148
# START %%PKG_INSTALL%%_SUSE #
129-
# install necessary packages
130149
RUN zypper -nq update \
131-
&& zypper -nq install tar unzip \
150+
&& zypper -nq install gzip tar unzip \
132151
&& zypper -nq clean \
133152
&& rm -rf /var/cache/zypp/*
134153
# END %%PKG_INSTALL%%_SUSE #
154+
155+
# START %%PKG_UPDATE%%_YUM #
156+
RUN yum -y --downloaddir=$OTMPDIR update \
157+
&& yum -y --downloaddir=$OTMPDIR clean all \
158+
&& rm -rf $OTMPDIR
159+
# END %%PKG_UPDATE%%_YUM #
160+
161+
# START %%PKG_UPDATE%%_APT #
162+
RUN apt-get -y update \
163+
&& apt-get -y upgrade \
164+
&& apt-get -y clean all
165+
# END %%PKG_UPDATE%%_APT #
166+
167+
# START %%PKG_UPDATE%%_APK #
168+
RUN apk update \
169+
&& apk upgrade \
170+
&& rm -rf /var/cache/apk/*
171+
# END %%PKG_UPDATE%%_APK #
172+
173+
# START %%PKG_UPDATE%%_SUSE #
174+
RUN zypper -nq update \
175+
&& zypper -nq clean \
176+
&& rm -rf /var/cache/zypp/*
177+
# END %%PKG_UPDATE%%_SUSE #

src/main/resources/docker-files/Dockerfile.update

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,12 @@ ENV PATCHDIR=${PATCHDIR:-patches} \
1616
OTMPDIR=${OTMPDIR:-/tmp/delme} \
1717
OPATCH_NO_FUSER=true
1818

19-
RUN mkdir -p $OTMPDIR \
20-
&& chown -R oracle:oracle $OTMPDIR/
21-
22-
# PLACEHOLDER FOR %%PKG_INSTALL%% #
19+
# PLACEHOLDER FOR %%NOT_PKG_UPDATE%% #
2320

2421
USER oracle
2522

26-
# PLACEHOLDER FOR %%OPATCH_1394%% #
27-
28-
# PLACEHOLDER FOR %%PATCH_APPLY%% #
29-
30-
# PLACEHOLDER FOR %%PATCH_CLEANUP%% #
23+
# PLACEHOLDER FOR %%OPATCH_1394_COPY%% #
24+
# PLACEHOLDER FOR %%UPDATE_OPATCH_1394%% #
3125

32-
RUN rm -rf $OTMPDIR
26+
# PLACEHOLDER FOR %%PATCH_APPLY_COPY%% #
27+
# PLACEHOLDER FOR %%UPDATE_PATCH_APPLY%% #
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
inventory_loc=/u01/app/oraInventory
1+
inventory_loc=/u01/oracle/oraInventory
22
inst_group=oracle

0 commit comments

Comments
 (0)