गोलंग बैकएंड विकास, समवर्ती संचालन में चमकता है और स्केलेबल और परफॉर्मेंट बैकएंड अनुप्रयोगों के निर्माण के लिए एक आदर्श सूट है। गो वर्कस्पेस के साथ इसके माइक्रोसर्विस आर्किटेक्चर के इर्द-गिर्द घूमने वाले पोस्टों की कमी के कारण, जो विभिन्न सेवाओं के माध्यम से मॉड्यूलर कोड साझा करने के लिए एक अविश्वसनीय उपकरण है, मैंने अपना कार्यान्वयन साझा करने का निर्णय लिया।
mkdir docker touch docker/Dockerfile.authentication touch docker/Dockerfile.users mkdir -p services/authentication mkdir -p services/users mkdir -p shared/utils touch docker-compose.yml
शेल कमांड का पालन करने से निम्नलिखित फ़ोल्डर ट्री संरचना उत्पन्न होगी
प्रोजेक्ट के मूल में, एक साधारण कमांड गो वर्क इनिट का उपयोग करके एक गो वर्कस्पेस बनाएं, इससे गो.वर्क फ़ाइल तैयार होगी
इसके बाद, सभी अलग-अलग गो प्रोजेक्ट्स को इनिशियलाइज़ करें जो निर्भरता बनाए रखने और कोडबेस चलाने में सक्षम होंगे।
cd services/authentication && go mod init github.com/LegationPro/ms/services/authentication cd ../.. && cd services/users && go mod init github.com/LegationPro/ms/services/users cd ../.. && cd shared && go mod init github.com/LegationPro/ms/shared
निम्नलिखित कमांड चलाने के बाद, आपका प्रोजेक्ट इस तरह दिखना चाहिए
इसके बाद, हम गो वर्कस्पेस को पॉप्युलेट करेंगे और निम्न कमांड चलाकर बताएंगे कि वर्कस्पेस का क्या हिस्सा है
कार्य उपयोग पर जाएं ./services/प्रमाणीकरण ./services/users ./shared
यह go.work फ़ाइल को पॉप्युलेट करेगा
go 1.23.1 use ( ./services/authentication ./services/users ./shared )
आइए पहले docker-compose.yml पर चलते हैं।
आपकी docker-compose.yml फ़ाइल इस तरह दिखनी चाहिए
services: authentication: build: context: . dockerfile: docker/Dockerfile.authentication volumes: - ./services/authentication:/app/authentication - ./shared:/app/shared ports: - "8081:8081" users: build: context: . dockerfile: docker/Dockerfile.users volumes: - ./services/users:/app/users - ./shared:/app/shared ports: - "8082:8082"
हम डॉकर-कंपोज़ को निम्नलिखित सेवाओं का उपयोग करने के लिए कहते हैं जो प्रमाणीकरण और उपयोगकर्ता हैं।
हम रूट संदर्भ देते हैं, ताकि हम रूट स्तर पर फ़ाइलों और फ़ोल्डरों तक पहुंच सकें।
डॉकरफ़ाइल स्थान की आपूर्ति करें।
कंटेनर के लिए दिए गए वॉल्यूम को परिभाषित करें और अंत में कंटेनर को चलाने के लिए एक पोर्ट को उजागर करें।
डॉकरफ़ाइल को सेट करना बहुत सरल और सीधा है।
हम नवीनतम गोलांग अल्पाइन छवि खींचते हैं, एक कार्यशील निर्देशिका निर्दिष्ट करते हैं, कुछ कोड को चारों ओर ले जाते हैं, इसे गो वर्कस्पेस संरचना के साथ काम करने के लिए समायोजित करते हैं और बस इसे चलाते हैं।
docker/Dockerfile.authentication
# Pull golang image FROM golang:1.23-alpine # Switch to /app as the working directory WORKDIR /app # Copy the authentication codebase over to our container COPY ./services/authentication /app/authentication/ # Copy the shared codebase and libraries that are shared across our apps inside the container COPY ./shared /app/shared # Initialize go workspace inside of our container RUN go work init # Assign different codebases to go workspaces RUN go work use ./authentication ./shared # Simply run our service with this simple command CMD ["go", "run", "./authentication"]
Dockerfile.users
# Pull golang image FROM golang:1.23-alpine # Switch to /app as the working directory WORKDIR /app # Copy the authentication codebase over to our container COPY ./services/users /app/users/ # Copy the shared codebase and libraries that are shared across our apps inside the container COPY ./shared /app/shared # Initialize go workspace inside of our container RUN go work init # Assign different codebases to go workspaces RUN go work use ./users ./shared # Simply run our service with this simple command CMD ["go", "run", "./users"]
services/authentication/main.go
package main import ( "fmt" "github.com/LegationPro/ms/shared/utils" ) func main() { fmt.Println(utils.SomeAuthFunc()) }
services/users/main.go
package main import ( "fmt" "github.com/LegationPro/ms/shared/utils" ) func main() { fmt.Println(utils.SomeUserFunc()) }
shared/utils/utils.go
package utils func SomeAuthFunc() string { return "Some auth func" } func SomeUserFunc() string { return "Some user func" }
संरचना अब इस तरह दिखनी चाहिए
docker-compose up --build
यह सुनिश्चित करने के लिए कि सब कुछ काम करता है, आउटपुट निम्नलिखित होना चाहिए:
बस, आपके पास पूरी तरह कार्यात्मक गो वर्कस्पेस मॉड्यूलर माइक्रोसर्विस आर्किटेक्चर सेटअप है! ??
स्रोत कोड: https://github.com/LegadationPro/go-microservice-modular-docker-setup
मेरे ब्लॉग पोस्ट को पढ़ने के लिए धन्यवाद, मुझे आशा है कि इससे मदद मिलेगी ❤️!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3