2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
सर्वप्रथमं जावा-प्रकल्पाय भिन्न-भिन्न-वातावरण-विन्यासानां आवश्यकता भवति यदा पैकेजिंग्-करणं भवति तदा तत्सम्बद्धानां विन्यासानां स्वयमेव उपयोगः भवति । अतः, कथं तत् प्राप्तुं शक्यते ?
स्वस्य Spring Boot परियोजनायाः src/main/resources निर्देशिकायां application.yml सञ्चिकां रचयन्तु अथवा योजयन्तु । अत्रैव Spring Boot पूर्वनिर्धारितरूपेण विन्याससञ्चिकाः अन्वेषयति । एषा सञ्चिका सामान्यविन्यासान् योजयितुं शक्नोति ।
ततः, भवान् तस्मिन् एव निर्देशिकायां application-test.yml, application-prod.yml इत्यादीनां सञ्चिकानां निर्माणमपि कर्तुं शक्नोति Spring Boot स्वयमेव एताः प्रोफाइल-विशिष्टविन्याससञ्चिकाः ज्ञास्यति । एतेषु सञ्चिकासु भिन्न-भिन्न-वातावरणानां कृते मापदण्डान् परिभाषितुं शक्नुवन्ति, यथा दत्तांशकोश-सङ्केताः, redis cache-सङ्केताः इत्यादयः ।
अर्थात् src/main/resources निर्देशिकायां एतादृशाः अनेकाः सञ्चिकाः भवितुम् अर्हन्ति ।
application.yml
application-prod.yml
application-test.yml
ततः, समानविन्यासयुक्तौ चरद्वयं घोषयितुं application-test.yml तथा application-prod.yml इत्येतयोः उपयोगं कर्तुं शक्नुवन्ति ।उदाहरणतया
अनुप्रयोग-परीक्षा.yml:
mysql:
url: https://xx.test.com/mysql
अनुप्रयोग-prod.yml:
mysql:
url: https://xx.online.com/mysql
जावा कोड् मध्ये, भवान् एतत् url गतिशीलरूपेण उपयोक्तुं शक्नोति:
@Value("${mysql.url}")
protected String mysqlUrl;
परिपूर्णम्।
अतः, यदा प्रणाली चाल्यते तदा स्वयमेव तत्सम्बद्धं profile-specific.yml सञ्चिकां कथं उपयोक्तव्यम्?कृपया अधः पश्यन्तु
बाह्यजालतः स्तरं स्तरं परियोजनां प्रति वातावरणचराः कथं पारिताः भवन्ति इति पश्यामः ।
प्रथमं जावा परियोजना प्रायः docker द्वारा संकुलितं भवति । अतः, docker इत्यस्मात् आरभ्यताम् :
docker build -f assistant-web-api/qke/Dockerfile -t docker-registry.qiyi.virtual/mbd-ai/assistant-web-api-test:$tag . --build-arg dc_env=test
मुख्यशब्दाः, २.build-arg , एकं पैरामीटर् सेट् कुर्वन्तु, dc_env=test
ARG dc_env
...
RUN mvn -T 8 -DdisableRpm=true -pl '!assistant-web-manager' clean package -Dmaven.test.skip=true -P${dc_env}
ध्यानं कुर्वन्तु यत् -P इत्यस्य अर्थः प्रोफाइल सेट् करणं भवति
पूर्वपदे mvn आदेशः -P इति योजितवान् । अवश्यं marven विन्याससञ्चिकायां अस्ति, यत् pom.xml अस्ति ।
<profiles>
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
<log.env>test</log.env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profile.active>prod</profile.active>
<log.env>prod</log.env>
</properties>
</profile>
</profiles>
उपरि २ वातावरणचराः योजिताः सन्ति ।प्रत्येकस्य चरस्य कृते गुणाः सेट् भवन्ति अर्थात् ।profile.active
एतत् मूल्यं कुत्र उपयोक्तुं शक्यते ?
मुख्य application.yml सञ्चिकायां तस्य उपयोगं कुर्वन्तु!
server:
profiles:
active: @profile.active@
पूर्वपदे profile.active चरस्य मूल्यस्य आधारेण कस्य Profile इत्यस्य उपयोगः करणीयः इति परिभाषयन्तु ।
ततः परं docker संकुलात् परिभाषिताः चराः मुख्य yml सञ्चिकायां पारिताः । अस्मिन् सञ्चिकायां, यत्किमपि मूल्यं server.profiles.active अस्ति, तत् कस्य उप-yml विन्यासस्य उपयोगः भविष्यति । यथा, यदि परीक्षणं भवति तर्हि application-test.yml इत्यस्य विन्यासः लोड् भविष्यति! ! !
प्रथमं marven प्रथमं समन्वययति । समन्वयनानन्तरं एकं वातावरणं परीक्ष्यताम् ।
तदनन्तरं स्थानीयरूपेण संकलितं संकुलं च कुर्वन्तु, -P इत्यस्य माध्यमेन च वातावरणचरं निर्दिशन्तु:
अन्ते, चालयितुं, अधोलिखितस्य चित्रस्य उपरि दक्षिणकोणे क्लिक् कुर्वन्तु, Active Profile मध्ये, तत्सम्बद्धानि वातावरणचराः पूरयन्तु, यथा test
अन्ते भवान् Run इत्यत्र क्लिक् कर्तुं शक्नोति!