Oracle Fusion Middleware/WebLogic Image Tool

1장. WebLogic Image Tool을 활용한 WebLogic Docker Image 만들기

수상한 김토끼 2022. 8. 1. 22:45

안녕하세요.

'수상한 김토끼' 입니다.

 

Oracle의 WebLogic Image Tool을 활용하여 WebLogic Docker Image 만들기를 진행 해 보겠습니다.

 

이 블로그 글은 미들웨어 경험이 없으신 분들도 쉽게 따라 하실 수 있도록 쉽게 작성하는 것이 목표입니다.

설명을 보고 진행하시다가 궁금하신 내용은 댓글로 문의하시면 가능한 범위 내에서 알려 드리도록 하겠습니다.


1. WebLogic Image Tool 소개

WebLogic Image Tool은 On-prem에서 사용하는 WebLogic 솔루션을 Docker Image 생성할 수 있는 도구입니다.

기존에 사용하던 WebLogic을 컨테이너 서비스로 사용해야 할 때 도움을 받을 수 있으며

몇 가지 준비사항만으로 쉽게 변환이 가능한 도구입니다.

 

물론 이런 도구를 사용하지 않고 직접 Docker Image를 작성할 수도 있겠지만 이번에는 WebLogic Image Tool을 활용한 Docker Image 생성에 대해 알아보도록 하겠습니다.

https://oracle.github.io/weblogic-image-tool/

 

:: WebLogic Image Tool

WebLogic Image Tool Oracle is finding ways for organizations using WebLogic Server to run important workloads, to move those workloads into the cloud, and to simplify and speed up the application deployment life cycle. By adopting industry standards, such

oracle.github.io


2. 설치준비

WebLogic Image Tool을 사용하기 위해서는 첫번째로 Docker 환경이 필요합니다.

 

공식 홈페이지에 따르면 다음과 같은 제약사항을 확인할 수 있습니다.

  • A container image client on the build machine, such as Docker or Podman.
    • For Docker, a minimum version of 18.03.1.ce is required.
    • For Podman, a minimum version of 3.0.1 is required.
  • An installed version of Java to run Image Tool, version 8+.
  • Installers for Oracle WebLogic Server and Oracle JDK from the Oracle Software Delivery Cloud for installation into the new image.
  • When using the imagetool alias from setup.sh instead of the shell script (imagetool.sh), Bash version 4.0 or later is required for <tab> command completion.
  • When using any of the patching options, --patches, --recommendedPatches, or --latestPSU, you will need to provide Oracle Support credentials.

https://oracle.github.io/weblogic-image-tool/userguide/prerequisites/

 

Prerequisites :: WebLogic Image Tool

Prerequisites A container image client on the build machine, such as Docker or Podman. For Docker, a minimum version of 18.03.1.ce is required. For Podman, a minimum version of 3.0.1 is required. An installed version of Java to run Image Tool, version 8+.

oracle.github.io

 

OS 및 Docker 환경구성등은 이번장에서는 다루지 않겠습니다.

사용하는 OS에 맞는 Docker 환경 구성을 진행 후 다음을 진행 해 주세요.

 

저는 CentOS 8 64bit에 Docker 20.10.17 버전을 사용 했습니다.

1
2
3
4
[root@middleware-works-centos8]# cat /etc/redhat-release
CentOS Stream release 8
[root@middleware-works-centos8]# docker --version
Docker version 20.10.17, build 100c701
cs

 

Docker 환경이 준비되었다면 이제 github에서 Weblogic Image Tool을 다운로드 받아줍니다.

https://github.com/oracle/weblogic-image-tool

 

GitHub - oracle/weblogic-image-tool: WebLogic Image Tool

WebLogic Image Tool. Contribute to oracle/weblogic-image-tool development by creating an account on GitHub.

github.com

 

아래와 같이 Code 탭에서 'Download ZIP'을 선택하여 파일을 다운로드 후 서버로 옮겨 줍니다. 

WebLogic Image tool Download

서버에서 zip 파일 압축을 풀어줍니다.

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
[root@middleware-works-centos8 tmp]# pwd
/home/opc/downloads/tmp
[root@middleware-works-centos8 tmp]# ls
imagetool.zip
[root@middleware-works-centos8 tmp]# unzip imagetool.zip
Archive:  imagetool.zip
   creating: imagetool/
   creating: imagetool/bin/
  inflating: imagetool/bin/setup.sh
  inflating: imagetool/bin/logging.properties
  inflating: imagetool/bin/imagetool.cmd
  inflating: imagetool/bin/imagetool.sh
  inflating: imagetool/LICENSE.txt
   creating: imagetool/lib/
  inflating: imagetool/lib/imagetool_completion.sh
  inflating: imagetool/lib/imagetool.jar
  inflating: imagetool/VERSION.txt
  inflating: imagetool/lib/fluent-hc-4.5.12.jar
  inflating: imagetool/lib/httpclient-4.5.12.jar
  inflating: imagetool/lib/httpcore-4.4.13.jar
  inflating: imagetool/lib/commons-logging-1.2.jar
  inflating: imagetool/lib/commons-codec-1.11.jar
  inflating: imagetool/lib/httpmime-4.5.12.jar
  inflating: imagetool/lib/picocli-4.6.1.jar
  inflating: imagetool/lib/json-20200518.jar
  inflating: imagetool/lib/compiler-0.9.10.jar
[root@middleware-works-centos8 tmp]# ls
imagetool  imagetool.zip
cs

여기까지 WebLogic Image tool 사용을 위한 설치 준비가 마무리 되었습니다.


3. WebLogic 및 JDK 설치파일 등록

WebLogic Image Tool을 사용하기 위해서는 만들고 싶은 버전의 WebLogic 설치파일을 다운로드 해야 합니다.

 

공식 홈페이지의 quick start에 나와 있는 그대로 해당 파일을 준비 해 줍니다.

https://oracle.github.io/weblogic-image-tool/quickstart/quickstart/

 

Steps :: WebLogic Image Tool

Steps Before you begin Make sure that you have fulfilled the Prerequisites and Setup requirements. Overview The high level steps for creating an image are: Download the Java and WebLogic installers from the Oracle Software Delivery Cloud. Add the installer

oracle.github.io

본 예제에서는 quick start와 같이 다음 2개의 파일을 가지고 진행하겠습니다.

1. fmw_12.2.1.3.0_wls_Disk1_1of1.zip
2. jdk-8u202-linux-x64.tar.gz

 

해당 파일을 다운로드 받아 서버에 업로드 해 줍니다.

1
2
3
4
[root@middleware-works-centos8 tmp]# pwd
/home/opc/downloads/tmp/tmp
[root@middleware-works-centos8 tmp]# ls
fmw_12.2.1.3.0_wls_Disk1_1of1.zip  jdk-8u202-linux-x64.tar.gz
cs

설치에 필요한 파일 준비가 완료되었습니다.

 

이제 이 2개 파일을 WebLogic Image Tool에서 인식 할 수 있도록 등록이 필요합니다.

 

zip 파일 압축을 풀었던 경로의 bin 아래로 이동하여 다음 명령(imagetool.sh)을 통해 파일을 등록 해 줍니다.

(명령어의 대소문자에 유의하여 입력해 주세요.)

jdk 등록: ./imagetool.sh cache addInstaller --type jdk --version 8u202 --path /home/opc/downloads/jdk-8u202-linux-x64.tar.gz

wls 등록: ./imagetool.sh cache addInstaller --type wls --version 12.2.1.3.0 --path /home/opc/downloads/fmw_12.2.1.3.0_wls_Disk1_1of1.zip

cache 확인: ./imagetool.sh cache listItems
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@middleware-works-centos8 bin]# pwd
/home/opc/wlit/imagetool/bin
[root@middleware-works-centos8 bin]# ls
imagetool.cmd  imagetool.sh  logging.properties  setup.sh
[root@middleware-works-centos8 bin]# ./imagetool.sh cache listItems
Cache contents
cache.dir=/root/cache
[root@middleware-works-centos8 bin]# ./imagetool.sh cache addInstaller --type jdk --version 8u202 --path /home/opc/downloads/jdk-8u202-linux-x64.tar.gz
[INFO   ] Successfully added to cache. jdk_8u202=/home/opc/downloads/jdk-8u202-linux-x64.tar.gz
[root@middleware-works-centos8 bin]# ./imagetool.sh cache addInstaller --type wls --version 12.2.1.3.0 --path /home/opc/downloads/fmw_12.2.1.3.0_wls_Disk1_1of1.zip
[INFO   ] Successfully added to cache. wls_12.2.1.3.0=/home/opc/downloads/fmw_12.2.1.3.0_wls_Disk1_1of1.zip
[root@middleware-works-centos8 bin]# ./imagetool.sh cache listItems
Cache contents
cache.dir=/root/cache
jdk_8u202=/home/opc/downloads/jdk-8u202-linux-x64.tar.gz
wls_12.2.1.3.0=/home/opc/downloads/fmw_12.2.1.3.0_wls_Disk1_1of1.zip
cs

여기까지 WebLogic 및 JDK 등록 과정이 완료 되었습니다.


4. WebLogic Docker Image 파일 생성

모든 준비가 끝났으니 create 명령으로 WebLogic Docker Image 파일을 생성 해 줍니다.

 

생성은 다음 명령으로 수행할 수 있으며 Docker Image tag 지정이 필요합니다.

Docker Image 생성: ./imagetool.sh create --tag wls:12.2.1.3.0
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
[root@middleware-works-centos8 bin]# ls
imagetool.cmd  imagetool.sh  logging.properties  setup.sh
[root@middleware-works-centos8 bin]# pwd
/home/opc/wlit/imagetool/bin
[root@middleware-works-centos8 bin]# ./imagetool.sh create --tag wls:12.2.1.3.0
[INFO   ] WebLogic Image Tool version 1.11.2
[INFO   ] Image Tool build ID: 51c8ba6b-30e9-4302-a018-a1513f41dafb
[INFO   ] Temporary directory used for image build context: /root/wlsimgbuilder_temp7662993480612690079
[INFO   ] Copying /home/opc/downloads/jdk-8u202-linux-x64.tar.gz to build context folder.
[INFO   ] Using middleware installers (wls) version 12.2.1.3.0
[INFO   ] Copying /home/opc/downloads/fmw_12.2.1.3.0_wls_Disk1_1of1.zip to build context folder.
[INFO   ] Starting build: docker build --no-cache --force-rm --tag wls:12.2.1.3.0 /root/wlsimgbuilder_temp7662993480612690079
Sending build context to Docker daemon  1.033GB
 
Step 1/27 : FROM ghcr.io/oracle/oraclelinux:8-slim as os_update
8-slim: Pulling from oracle/oraclelinux
e54b73e95ef3: Pulling fs layer
e54b73e95ef3: Verifying Checksum
e54b73e95ef3: Download complete
e54b73e95ef3: Pull complete
Digest: sha256:6bc31f1f8e3681d7ae8c114077cd9ab79b12c501baf7f96cfca7356f907fbce2
Status: Downloaded newer image for ghcr.io/oracle/oraclelinux:8-slim
 ---> c7c0b3ae3077
Step 2/27 : LABEL com.oracle.weblogic.imagetool.buildid="51c8ba6b-30e9-4302-a018-a1513f41dafb"
 ---> Running in 9b93dda45ec1
Removing intermediate container 9b93dda45ec1
 ---> 911c249319cd
Step 3/27 : USER root
 ---> Running in f01bf025f4b6
Removing intermediate container f01bf025f4b6
 ---> 661e7648aa7a
Step 4/27 : RUN microdnf update     && microdnf install gzip tar unzip libaio jq findutils diffutils shadow-utils     && microdnf clean all
 ---> Running in fd7f2bfac303
Downloading metadata...
Downloading metadata...
Nothing to do.
Package                          Repository            Size
Installing:
 diffutils-3.6-6.el8.x86_64      ol8_baseos_latest 369.3 kB
 findutils-1:4.6.0-20.el8.x86_64 ol8_baseos_latest 540.6 kB
 gzip-1.9-13.el8_5.x86_64        ol8_baseos_latest 170.7 kB
 jq-1.6-3.el8.x86_64             ol8_appstream     206.7 kB
 libaio-0.3.112-1.el8.x86_64     ol8_baseos_latest  33.4 kB
 oniguruma-6.8.2-2.el8.x86_64    ol8_appstream     191.8 kB
 tar-2:1.30-5.el8.x86_64         ol8_baseos_latest 857.9 kB
 unzip-6.0-46.el8.x86_64         ol8_baseos_latest 200.5 kB
Transaction Summary:
 Installing:        8 packages
 Reinstalling:      0 packages
 Upgrading:         0 packages
 Obsoleting:        0 packages
 Removing:          0 packages
 Downgrading:       0 packages
Downloading packages...
Running transaction test...
Installing: oniguruma;6.8.2-2.el8;x86_64;ol8_appstream
Installing: jq;1.6-3.el8;x86_64;ol8_appstream
Installing: unzip;6.0-46.el8;x86_64;ol8_baseos_latest
Installing: tar;2:1.30-5.el8;x86_64;ol8_baseos_latest
Installing: libaio;0.3.112-1.el8;x86_64;ol8_baseos_latest
Installing: gzip;1.9-13.el8_5;x86_64;ol8_baseos_latest
Installing: findutils;1:4.6.0-20.el8;x86_64;ol8_baseos_latest
Installing: diffutils;3.6-6.el8;x86_64;ol8_baseos_latest
Complete.
Complete.
Removing intermediate container fd7f2bfac303
 ---> 5daafa0ce8df
Step 5/27 : RUN if [ -"$(getent group oracle)" ]; then groupadd oracle || exit 1 ; fi  && if [ -"$(getent group oracle)" ]; then groupadd oracle || exit 1 ; fi  && if [ -"$(getent passwd oracle)" ]; then useradd -g oracle oracle || exit 1fi  && mkdir -/u01  && chown oracle:oracle /u01  && chmod 775 /u01
 ---> Running in 2bd7f1988c44
Removing intermediate container 2bd7f1988c44
 ---> fcccf2392b0a
Step 6/27 : FROM os_update as jdk_build
 ---> fcccf2392b0a
Step 7/27 : LABEL com.oracle.weblogic.imagetool.buildid="51c8ba6b-30e9-4302-a018-a1513f41dafb"
 ---> Running in 6f9a8477dbfe
Removing intermediate container 6f9a8477dbfe
 ---> 53b9cf2db0e6
Step 8/27 : ENV JAVA_HOME=/u01/jdk
 ---> Running in b0eb9ba58efc
Removing intermediate container b0eb9ba58efc
 ---> e348dc98f1bd
Step 9/27 : COPY --chown=oracle:oracle jdk-8u202-linux-x64.tar.gz /tmp/imagetool/
 ---> 4e8d9a9546d8
Step 10/27 : USER oracle
 ---> Running in 2a638de6b24b
Removing intermediate container 2a638de6b24b
 ---> 125fb4077f71
Step 11/27 : RUN tar xzf /tmp/imagetool/jdk-8u202-linux-x64.tar.gz -/u01 && $(test -/u01/jdk* && mv /u01/jdk* /u01/jdk || mv /u01/graal* /u01/jdk) && rm -rf /tmp/imagetool && rm -/u01/jdk/javafx-src.zip /u01/jdk/src.zip
 ---> Running in e89ba0f9a46c
Removing intermediate container e89ba0f9a46c
 ---> 5ca9baa155e4
Step 12/27 : FROM os_update as wls_build
 ---> fcccf2392b0a
Step 13/27 : LABEL com.oracle.weblogic.imagetool.buildid="51c8ba6b-30e9-4302-a018-a1513f41dafb"
 ---> Running in 54f9004282dd
Removing intermediate container 54f9004282dd
 ---> 9b3e91c39b1b
Step 14/27 : ENV JAVA_HOME=/u01/jdk ORACLE_HOME=/u01/oracle OPATCH_NO_FUSER=true
 ---> Running in 7967afc895a1
Removing intermediate container 7967afc895a1
 ---> 43ee30ba805c
Step 15/27 : RUN mkdir -/u01/oracle && mkdir -/u01/oracle/oraInventory && chown oracle:oracle /u01/oracle/oraInventory && chown oracle:oracle /u01/oracle
 ---> Running in 1172ba5543f5
Removing intermediate container 1172ba5543f5
 ---> 928427585992
Step 16/27 : COPY --from=jdk_build --chown=oracle:oracle /u01/jdk /u01/jdk/
 ---> 9b68f6f50482
Step 17/27 : COPY --chown=oracle:oracle fmw_12.2.1.3.0_wls_Disk1_1of1.zip wls.rsp /tmp/imagetool/
 ---> 756751f052bc
Step 18/27 : COPY --chown=oracle:oracle oraInst.loc /u01/oracle/
 ---> c5fffb8b7130
Step 19/27 : USER oracle
 ---> Running in da51851dd83b
Removing intermediate container da51851dd83b
 ---> 5f7b4a4340dc
Step 20/27 : RUN echo "INSTALLING MIDDLEWARE"     && echo "INSTALLING wls"     && unzip -/tmp/imagetool/fmw_12.2.1.3.0_wls_Disk1_1of1.zip "*.[jb][ai][rn]" -/tmp/imagetool && /u01/jdk/bin/java -Xmx1024m -jar /tmp/imagetool/fmw_12.2.1.3.0_wls.jar -silent ORACLE_HOME=/u01/oracle     -responseFile /tmp/imagetool/wls.rsp -invPtrLoc /u01/oracle/oraInst.loc -ignoreSysPrereqs -force -novalidation   && test $? -eq 0 && chmod -R g+/u01/oracle || (grep -vh "NOTIFICATION" /tmp/OraInstall*/install*.log && exit 1)
 ---> Running in 3bcf20f93b2d
INSTALLING MIDDLEWARE
INSTALLING wls
Launcher log file is /tmp/OraInstall2022-08-01_12-10-26PM/launcher2022-08-01_12-10-26PM.log.
Extracting the installer . . . . . Done
Checking if CPU speed is above 300 MHz.   Actual 2445.406 MHz    Passed
Checking swap space: must be greater than 512 MB.   Actual 8191 MB    Passed
Checking if this platform requires a 64-bit JVM.   Actual 64    Passed (64-bit not required)
Checking temp space: must be greater than 300 MB.   Actual 12190 MB    Passed
Preparing to launch the Oracle Universal Installer from /tmp/OraInstall2022-08-01_12-10-26PM
Log: /tmp/OraInstall2022-08-01_12-10-26PM/install2022-08-01_12-10-26PM.log
Setting ORACLE_HOME to /u01/oracle
Copyright (c) 19962017, Oracle and/or its affiliates. All rights reserved.
Reading response file..
Skipping Software Updates
Validations are disabled for this session.
Verifying data
Copying Files
Percent Complete : 10
Percent Complete : 20
Percent Complete : 30
Percent Complete : 40
Percent Complete : 50
Percent Complete : 60
Percent Complete : 70
Percent Complete : 80
Percent Complete : 90
Percent Complete : 100
 
The installation of Oracle Fusion Middleware 12c WebLogic Server and Coherence 12.2.1.3.0 completed successfully.
Logs successfully copied to /u01/oracle/oraInventory/logs.
Removing intermediate container 3bcf20f93b2d
 ---> 8857fe7f39ce
Step 21/27 : FROM os_update as final_build
 ---> fcccf2392b0a
Step 22/27 : ENV ORACLE_HOME=/u01/oracle     JAVA_HOME=/u01/jdk     PATH=${PATH}:/u01/jdk/bin:/u01/oracle/oracle_common/common/bin:/u01/oracle/wlserver/common/bin:/u01/oracle
 ---> Running in e560753ced7f
Removing intermediate container e560753ced7f
 ---> 39ea94312cb5
Step 23/27 : LABEL com.oracle.weblogic.imagetool.buildid="51c8ba6b-30e9-4302-a018-a1513f41dafb"
 ---> Running in 64daa5b0bc1f
Removing intermediate container 64daa5b0bc1f
 ---> f91b13866c7b
Step 24/27 : COPY --from=jdk_build --chown=oracle:oracle /u01/jdk /u01/jdk/
 ---> c0f735c6d8c5
Step 25/27 : COPY --from=wls_build --chown=oracle:oracle /u01/oracle /u01/oracle/
 ---> ded8b1c9df84
Step 26/27 : USER oracle
 ---> Running in b02e8b04b86f
Removing intermediate container b02e8b04b86f
 ---> 95d620956ed0
Step 27/27 : WORKDIR /u01/oracle
 ---> Running in 9d44aca8532c
Removing intermediate container 9d44aca8532c
 ---> d4374a78436c
Successfully built d4374a78436c
Successfully tagged wls:12.2.1.3.0
[INFO   ] Build successful. Build time=393s. Image tag=wls:12.2.1.3.0
[root@middleware-works-centos8 bin]# docker image list
REPOSITORY                   TAG          IMAGE ID       CREATED          SIZE
wls                          12.2.1.3.0   d4374a78436c   55 minutes ago   1.36GB
ghcr.io/oracle/oraclelinux   8-slim       c7c0b3ae3077   3 weeks ago      101MB
cs

이미지 생성이 완료되었습니다.

 

docker image list 명령으로 정상적으로 docker image가 생성 된 것을 확인 해 볼 수 있습니다.

docker 파일 실행 및 쿠버네티스 등을 활용하여 사용하시면 됩니다.

 

다음에는 Docker Image생성 응용 및 운영환경 구성에 대해 알아보도록 하겠습니다.