बैजल डॉकर कंटेनर के साथ शुरू करना

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
समस्या की शिकायत करें स्रोत देखें

इस पेज पर बेज़ल कंटेनर के कॉन्टेंट की जानकारी दी गई है. साथ ही, यह भी बताया गया है कि बेज़ल कंटेनर का इस्तेमाल करके बैज़ेल कंटेनर का इस्तेमाल करके abseil-cpp प्रोजेक्ट कैसे बनाया जाता है. साथ ही, डायरेक्ट्री माउंट करने की सुविधा की मदद से Bazel कंटेनर का इस्तेमाल करके, सीधे होस्ट मशीन से यह प्रोजेक्ट बनाने का तरीका बताया गया है.

डायरेक्ट्री माउंट करने के लिए, अपनी होस्ट मशीन से Abseil प्रोजेक्ट बनाएं

इस सेक्शन में दिए गए निर्देशों का इस्तेमाल करके, बेज़ल कंटेनर का इस्तेमाल करके बनाया जा सकता है. इसमें वे सोर्स होते हैं जिन्हें आपके होस्ट एनवायरमेंट में देखा जाता है. आपके बनाए गए हर बिल्ड कमांड के लिए एक कंटेनर शुरू होता है. बिल्ड के नतीजों को आपके होस्ट एनवायरमेंट में कैश मेमोरी में सेव किया जाता है, ताकि उन्हें बिल्ड में फिर से इस्तेमाल किया जा सके.

अपनी होस्ट मशीन में निर्देशिका को प्रोजेक्ट का रूप दें.

git clone https://github.com/abseil/abseil-cpp.git /src/workspace

ऐसा फ़ोल्डर बनाएं जिसमें बिल्ड में शेयर किए जाने वाले कैश मेमोरी में सेव किए गए नतीजे शामिल हों.

mkdir -p /tmp/build_output/

प्रोजेक्ट बनाने के लिए Bazel कंटेनर का इस्तेमाल करें और अपने होस्ट मशीन के आउटपुट फ़ोल्डर में, बिल्ड आउटपुट उपलब्ध कराएं.

docker run \
  -e USER="$(id -u)" \
  -u="$(id -u)" \
  -v /src/workspace:/src/workspace \
  -v /tmp/build_output:/tmp/build_output \
  -w /src/workspace \
  l.gcr.io/google/bazel:latest \
  --output_user_root=/tmp/build_output \
  build //absl/...

इस प्रोजेक्ट को सैनिटाइज़र के साथ बनाने के लिए, --config=asan|tsan|msan बिल्ड फ़्लैग जोड़ें. इसके बाद, पता सैनिटाइज़र (asan), ThreadSanitizer (tsan) या MemorySanitizer (msan) को चुनें.

docker run \
  -e USER="$(id -u)" \
  -u="$(id -u)" \
  -v /src/workspace:/src/workspace \
  -v /tmp/build_output:/tmp/build_output \
  -w /src/workspace \
  l.gcr.io/google/bazel:latest \
  --output_user_root=/tmp/build_output \
  build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test

कंटेनर के अंदर से Abseil प्रोजेक्ट बनाएं

इस सेक्शन में दिए गए निर्देशों का इस्तेमाल करके, आप बेज़ल कंटेनर का इस्तेमाल करके कंटेनर के अंदर के स्रोतों को बना सकते हैं. अपने डेवलपमेंट वर्कफ़्लो की शुरुआत में किसी कंटेनर को शुरू करने और कंटेनर के अंदर Worskp में बदलाव करने पर, बिल्ड के नतीजों को कैश मेमोरी में सेव किया जाएगा.

बेज़ल कंटेनर में, शेल लगाने के लिए:

docker run --interactive --entrypoint=/bin/bash l.gcr.io/google/bazel:latest

हर कंटेनर आईडी अलग होता है. घंटी के निर्देशों में, कंटेनर 5a99103747c6 था.

प्रोजेक्ट का क्लोन बनाएं.

root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/

सामान्य बिल्ड करें.

root@5a99103747c6:~/abseil-cpp# bazel build //absl/...

प्रोजेक्ट को --config=asan|tsan|msan जोड़कर पता साफ़ करने के लिए सैनिटाइज़र बनाएं. इसके लिए, AddressSanitizer (asan), ThreadSanitizer (tsan) या MemorySanitizer (msan) चुनने का विकल्प चुनें.

root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test

बेज़ल कंटेनर के बारे में जानें

अगर आपने अभी तक बेज़ल कंटेनर में इंटरैक्टिव शेल नहीं लगाया है, तो इसे शुरू करें.

docker run -it --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
root@5a99103747c6:/#

कंटेनर के कॉन्टेंट को एक्सप्लोर करें.

root@5a99103747c6:/# clang --version
clang version 8.0.0 (trunk 340178)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
root@5a99103747c6:/# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
root@5a99103747c6:/# python -V
Python 2.7.12
root@5a99103747c6:/# python3 -V
Python 3.6.6
root@5a99103747c6:/# bazel version
Extracting Bazel installation...
Build label: 0.17.1
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Sep 14 10:39:25 2018 (1536921565)
Build timestamp: 1536921565
Build timestamp as int: 1536921565