मल्टी-प्लेटफ़ॉर्म बिल्ड्स

इंटरमीडिएट Docker

Mike Metzger

Data Engineering Consultant

मल्टी-प्लेटफ़ॉर्म?

  • मल्टी-प्लेटफ़ॉर्म का मतलब क्या है?
    • अलग-अलग OS प्रकार
      • linux
      • windows
      • macos
    • अलग-अलग CPU प्रकार
      • x64_64 या amd64
      • arm64
      • arm7
  • आमतौर पर os/cpu के रूप में, जैसे linux/amd64 कहा जाता है

Linux Tux लोगो

AMD64 लोगो

ARM लोगो

इंटरमीडिएट Docker

मल्टी-प्लेटफ़ॉर्म बिल्ड बनाना

  • मल्टी-स्टेज बिल्ड व्यवहार पर आधारित है
  • शुरुआती/बिल्ड स्टेज आमतौर पर क्रॉस-कम्पाइलर यूज़ करता है और होस्ट सिस्टम की आर्किटेक्चर पर निर्भर रहता है
  • अंतिम स्टेज लक्षित टार्गेट के लिए आर्किटेक्चर/OS का उपयोग करता है
इंटरमीडिएट Docker

मल्टी-प्लेटफ़ॉर्म Dockerfile विकल्प

  • बिल्ड स्टेज --platform=$BUILDPLATFORM फ़्लैग यूज़ करता है
    • $BUILDPLATFORM उस होस्ट के प्लेटफ़ॉर्म को दर्शाता है जो बिल्ड चला रहा है
  • कभी-कभी ARG निर्देश यूज़ होता है
    • लोकल environment variables को Docker build सिस्टम में पास करता है
    • इस केस में, TARGETOS और TARGETARCH
    • ARG TARGETOS TARGETARCH
    • होस्ट स्तर पर environment variables पहले से परिभाषित हो सकते हैं या env कमांड से सेट किए जा सकते हैं
इंटरमीडिएट Docker

मल्टी-प्लेटफ़ॉर्म उदाहरण

# Initial stage, using local platform
FROM --platform=$BUILDPLATFORM golang:1.21 AS build

# Copy source into place WORKDIR /src COPY . .
# Pull the environment variables from the host ARG TARGETOS TARGETARCH
# Compile code using the ARG variables RUN env GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o /final/app .
# Create container and load the cross-compiled code FROM alpine COPY --from=build /final/app /bin
इंटरमीडिएट Docker

मल्टी-प्लेटफ़ॉर्म बिल्ड बनाना

  • मल्टी-प्लेटफ़ॉर्म बिल्ड बनाने के लिए docker build की जगह docker buildx को विकल्पों के साथ यूज़ करें
  • docker buildx, docker build से ज़्यादा कमांड और क्षमताएँ देता है, जिसमें प्लेटफ़ॉर्म बताने का विकल्प भी शामिल है

docker buildx build --platform linux/amd64,linux/arm64 -t multi-platform-app .

  • बिल्ड चलाने से पहले, एक नया builder कंटेनर मौजूद होना चाहिए। यह docker buildx create --bootstrap --use कमांड से किया जाता है
इंटरमीडिएट Docker

अभ्यास करते हैं!

इंटरमीडिएट Docker

Preparing Video For Download...