Docker Compose के साथ WebLogic ऑटो-डिप्लॉय
Docker Compose एक आसान उपकरण है जो आपको कई कंटेनरों से युक्त विकास वातावरण को जल्दी से चालू करने की अनुमति देता है। डॉकर छवियों के संदर्भ में, विशिष्ट रणनीति एक नए एप्लिकेशन के संस्करण के साथ एक नई छवि बनाना और इसे एक बाहरी वातावरण में तैनात करना है। विकास के माहौल की जरूरतों के लिए, आप एप्लिकेशन के एक नए पुनरावृत्ति को तैनात करने के लिए उसी कंटेनर का पुन: उपयोग करके इसे तेज कर सकते हैं।
WebLogic के मामले में, सर्वर एक स्वचालित परिनियोजन सुविधा प्रदान करता है। आपको बस इतना करना है कि आर्टिफैक्ट
या एक एक्सप्लोडेड आर्काइव को autodeploy डायरेक्टरी में रखें। Docker वॉल्यूम की मदद से, आप एप्लिकेशन आर्टिफैक्ट को स्वचालित परिनियोजन के स्थान पर बाइंड कर सकते हैं।
निर्माण करते समय, कलाकृतियाँ आमतौर पर build (Gradle) या target (Maven) डायरेक्टरी में उत्पन्न होती हैं। हालाँकि, इस पथ को सीधे लिंक करना
कई कारणों से सबसे अच्छा विचार नहीं है:
- इसमें गैर-तैनात करने योग्य उपनिर्देशिकाएँ होती हैं।
- एक लापता आर्टिफैक्ट एक खाली उपनिर्देशिका में बदल जाएगा।
- प्रत्येक
mvn cleanके साथ, वॉल्यूम बाइंड अगले पुनरारंभ तक खोया हुआ प्रतीत हो सकता है (filesystem-specific)।
इसलिए, एक विश्वसनीय कॉन्फ़िगरेशन जिसके लिए मैन्युअल हस्तक्षेप की आवश्यकता नहीं है, वॉल्यूम को पैरेंट डायरेक्टरी से बाइंड करना है।
project/
├─ src/
│ ├─ main/
│ │ ├─ java/
│ │ │ ├─ .../
│ │ ├─ webapp/
│ │ │ ├─ WEB-INF/
│ │ │ │ ├─ web.xml
├─ target/
│ ├─ classes
│ ├─ wlsdemo
│ ├─ wlsdemo.war
├─ src/
│ ├─ index.css
│ ├─ index.js
├─ docker-compose.yml
├─ domain.properties
├─ pom.xml
उपरोक्त नमूना ट्री में, project फ़ोल्डर को कंटेनर के अंदर /project डायरेक्टरी से बाइंड करने के लिए, निम्नलिखित docker-compose.yml का उपयोग करें:
version: '3'
services:
weblogic:
build: ./
environment:
- "debugFlag=true"
- "DEBUG_PORT=*:8453"
ports:
- "7001:7001" #admin_listen_port
- "9002:9002" #secure administration_port
- "8453:8453" #custom debug port
volumes:
- ./:/project
- ./:/u01/oracle/properties
आप एक सॉफ्ट लिंक का उपयोग करके स्वचालित आर्टिफैक्ट परिनियोजन को लागू कर सकते हैं। नीचे दिए गए Dockerfile पर एक नज़र डालें।
यह docker-compose.yml द्वारा ऑटो-बिल्ड है। package चरण के दौरान maven-war-plugin/maven-ear-plugin
द्वारा उत्पन्न एक्सप्लोडेड आर्काइव को एक पूर्ण आर्टिफैक्ट के साथ भी बदला जा सकता है।
# Requires license acceptation at https://container-registry.oracle.com/ Middleware > WebLogic
FROM container-registry.oracle.com/middleware/weblogic:14.1.1.0-dev-11
RUN mkdir -p /u01/oracle/user_projects/domains/base_domain/autodeploy/ \
&& /usr/bin/ln -s /project/target/wlsdemo \
/u01/oracle/user_projects/domains/base_domain/autodeploy/wlsdemo
classes सबफ़ोल्डर का संशोधन निरंतर आधार पर मॉनिटर किया जाता है और क्लास लोडर को फिर से लोड करने का कारण बनता है।
दस्तावेज़ीकरण
REDEPLOY फ़ाइल (एक्सप्लोडेड WAR/EAR आर्टिफैक्ट के WEB-INF/META-INF के तहत) को अपडेट करके एक पूर्ण पुन: परिनियोजन का भी वर्णन करता है। package के दौरान अंतिम के रूप में रखे गए maven-antrun-plugin के साथ इसे स्वचालित करें।
<build>
<finalName>${artifactId}</finalName>
<plugins>
<!--...-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>touch-redeploy-file</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<touch file="${project.build.directory}/${project.artifactId}/WEB-INF/REDEPLOY"
verbose="true" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
उदाहरण में, मैंने debugFlag और DEBUG_PORT पर्यावरण चर का उपयोग किया है। ये
/u01/oracle/user_projects/domains/base_domain/bin/setDomainEnv.sh स्क्रिप्ट द्वारा नियंत्रित किए जाते हैं। संक्षेप में, यह सभी नेटवर्क इंटरफेस (JDK 9+) पर डीबगर मोड को कॉन्फ़िगर करता है।
अब आप डीबग कर सकते हैं
और अपने पसंदीदा IDE (IntelliJ > Edit Configuration > Remote JVM Debug) द्वारा सुगम JPDA हॉट स्वैप का लाभ उठा सकते हैं।
domain.propertiesफ़ाइल कस्टम इनिशियलाइज़ेशन स्क्रिप्ट के बिना एक क्लीन इमेज के लिए आवश्यक है। इसमें निम्नलिखित प्रारूप में व्यवस्थापक उपयोगकर्ता नाम और पासवर्ड होना चाहिए:username=myadminusername password=myadminpassword12#
यदि आप JVM डीबगर के संलग्न होने की प्रतीक्षा करना चाहते हैं, तो
debugFlagके बजाय सीधेJAVA_OPTIONSपर्यावरण चर को कॉन्फ़िगर करें।
कस्टम पोर्ट मैपिंग से सावधान रहें।
t3कनेक्शन स्थापित करने के लिए इसके लिए-Dweblogic.rjvm.enableprotocolswitch=trueकी आवश्यकता हो सकती है।
