تعرف على كيفية استخدام Docker لحزم ونشر تطبيقات Go بكفاءة ، مما يجعلها محمولة وسهلة الإدارة.

Docker هي أكثر تقنيات نقل الحاويات شيوعًا نظرًا لبساطتها وسهولة استخدامها. يخفف Docker من ضغوط مشكلات قابلية النقل في تطوير البرامج وتوزيعها. يمكنك نشر حاويات Docker الخاصة بك لمعظم مزودي الخدمات السحابية.

يمكن أن تساعدك حاوية تطبيقات Go الخاصة بك مع Docker على ضمان نشر متسق وموثوق عبر بيئات مختلفة. يمكنك نشر تطبيقات Go الخاصة بك في بيئات مختلفة مثل التطوير والتشغيل المرحلي والإنتاج. تعتبر حاويات Docker خفيفة الوزن وتشغل مساحة أقل من الأجهزة الافتراضية التقليدية. يمكن أن يوفر لك هذا المال الذي تنفقه على تكاليف الاستضافة ، كما يمكن أن يجعل عمليات النشر الخاصة بك أسرع.

إعداد خادم ويب بسيط في Go

تحتوي مكتبة Go القياسية على الحزم التي ستحتاجها لإعداد خادم ويب بسيط.

أولاً ، قم باستيراد ملف http, سجل، و json الحزم. سوف تستخدم حزمة HTTP الخاصة بـ Go لإعداد الخادم و يحصل طلب نقطة النهاية. ال سجل حزمة لتسجيل الأخطاء المحتملة إلى وحدة التحكم الخاصة بك. ال حزمة json لتشفير بنية إلى JSON لنقطة نهاية API.

يستورد (
"ترميز / json"
"سجل"
"net / http"
)
instagram viewer

يمكنك ترميز مثيل البنية كـ JSON للعميل كاستجابة بناءً على صلاحية الطلب على النحو التالي:

يكتب رسالة هيكل {
إجابة خيط`json:" رد "`
وصف خيط`json:" الوصف "`
}

تقوم وظيفة المعالج بإرجاع رسالة ناجحة إلى العميل إذا كان الطلب إلى نقطة النهاية هو ملف يحصل طلب.

// dockerTestEndpoint يعالج نقطة نهاية API لاختبار اتصال Docker
funcdockerTestEndpoint(الكاتب http. ResponseWriter ، طلب * http. طلب) {

// تعيين رأس الاستجابة للإشارة إلى محتوى JSON
كاتب. العنوان ()."نوع المحتوى،""التطبيق / json")

// إذا كانت طريقة الطلب هي GET
لو طلب. الطريقة == "يحصل" {

// اضبط رمز حالة الاستجابة على 200 موافق
كاتب. WriteHeader (http. موافق)

// إنشاء رسالة هيكلية لاستجابة ناجحة
الرسالة: = الرسالة {
إجابة: "ناجح",
وصف: "لقد نجحت في الوصول إلى نقطة نهاية API" +
"من حاوية Docker الخاصة بك",
}
// قم بتشفير الرسالة بتنسيق JSON وإرسالها كرد
يخطئ: = json. NewEncoder (كاتب) .Encode (& message)
لو يخطئ! لا شيء {
يعود
}
} آخر {

// إذا كانت طريقة الطلب ليست GET
// قم بتعيين رمز حالة الاستجابة على 400 طلب سيئ
كاتب. WriteHeader (http. StatusBadRequest)

// إنشاء بنية رسالة لاستجابة طلب سيئة
الرسالة: = الرسالة {
إجابة: "اقتراح غير جيد",
وصف: "لقد نجحت في الوصول إلى نقطة نهاية واجهة برمجة التطبيقات من" +
"Docker Container ، لكنك قدمت طلبًا سيئًا",
}

// قم بتشفير الرسالة بتنسيق JSON وإرسالها كرد
يخطئ: = json. NewEncoder (كاتب) .Encode (& message)
لو يخطئ! لا شيء {
يعود
}
}
}

تقوم بإعداد وظيفة المعالج في الوظيفة الرئيسية مع التوجيه كـ /api/docker/go. ال dockerTestEndpoint تقوم دالة المعالج بالتحقق من أن الطلب إلى المعالج هو طلب GET. إذا كان طلب GET ، فسيتم ترميز ملف رسالة مثيل البنية للعميل بناءً على حالة الطلب.

إليك كيفية تحميل وظيفة المعالج على مسار وإعداد الخادم للتشغيل على المنفذ 8080:

funcرئيسي() {
// تسجيل وظيفة المعالج "dockerTestEndpoint"
// لمعالجة طلبات عنوان URL "/ api / docker / go".
http. مقبض"/ api / docker / go"، dockerTestEndpoint)

// ابدأ خادم HTTP واستمع إلى الطلبات الواردة على المنفذ 8080.
يخطئ: = http. استمع و سيرف (":8080", لا شيء)
لو يخطئ! لا شيء {
سجل. فاتالن ("هناك خطأ بالخادم:"، يخطئ)
}
}

ال رئيسي الوظيفة هي نقطة دخول الخادم ، والتي تستمع إلى المنفذ 8080. ال مقبض طريقة تصاعد المسارات على وظيفة المعالج. ال استمع وخدم أسلوب يبدأ الخادم على منفذ المضيف المحلي المحدد 8080.

الشروع في العمل في حاوية تطبيقات Go الخاصة بك باستخدام Docker

بعد تثبيت Docker وإعداده ، ستحتاج إلى ملف Docker باسم Dockerfile لإنشاء وإنشاء صورة Docker لتطبيق Go. ستحدد أوامر للصورة الأساسية وأوامر لنسخ الملفات وإضافة دليل العمل وتشغيل التطبيق في Dockerfile.

قم بتشغيل هذا الأمر في محطة العمل الخاصة بك لإنشاء Dockerfile.

المس Dockerfile

ستحدد أوامر بناء صورة Docker الخاصة بك في Dockerfile.

إذا كانت هناك أي ملفات تريد فصلها عن صورة Docker ، فيمكنك استخدام ملف .dockerignore ملف. ال .dockerignore تعمل الملفات تمامًا مثل .gitignore الملفات.

المس

بعد ذلك ، ستحدد أوامر الإنشاء في Dockerfile لتضمين تطبيقاتك في حاويات.

تحديد الأوامر في Dockerfile

ملفات Dockerfiles قابلة للتخصيص بناءً على مواصفات مشروعك. ستحدد أوامر لبناء الصورة الأساسية لبناء التطبيق.

في ما يلي مثال على محتويات ملف Dockerfile الذي ينشئ خادم الويب أعلاه:

# استخدم صورة قاعدة Golang
من جولانج: الأحدث

# تعيين دليل العمل داخل الحاوية
عمل /app

# نسخ جميع الملفات في الدليل المحلي إلى دليل العمل في الحاوية
ينسخ. .

# قم بتنزيل تبعيات وحدة Go
يجري الذهاب تنزيل وزارة الدفاع

# بناء تطبيق Go
يجري go build -o app

# تعيين نقطة الدخول للتطبيق
نقطة الدخول ["./برنامج"]

يستخدم Dockerfile ملفات جولانج: الأحدث الصورة الأساسية ، لإنشاء التطبيق بعد ضبط دليل العمل على /app.

يقوم Dockerfile بنسخ الملفات ذات الامتداد ينسخ الأمر وتنزيل التبعيات بامتداد يجري يأمر.

يحدد الملف عملية إنشاء وتشغيل بامتداد يجري الأمر ، ثم يعيّن الأمر ليتم تشغيله عندما تبدأ الحاوية بامتداد CMD يأمر.

احفظ ملف Dockerfile في نفس الدليل مثل ملف go.mod و main.go الملفات. ثم قم بتشغيل هذا الأمر لإنشاء صورة Docker من Dockerfile هذا:

بناء عامل ميناء -t Golang

سيقوم الأمر أعلاه بإنشاء صورة Docker مع العلامة golangtutorial. يمكنك تشغيل حاوية باستخدام هذا الأمر:

docker run -p 8080: 8080 golangtutorial

يقوم الأمر بتعيين المنفذ 8080 من الحاوية إلى المنفذ 8080 على المضيف المحلي للجهاز المضيف. يمكنك طلب الخادم الذي يعمل في حاوية Docker من الجهاز المضيف.

هَا هِيَ نَتِيجَةُ مِنْ إرسال طلب CURL إلى الخادم، هذه المرة يعمل على Docker:

يمكنك استخدام Docker Compose لتنظيم الحاويات

Docker Compose هي أداة يمكنك استخدامها لتنظيم (العمل مع العديد) حاويات Docker. يتيح لك Docker Compose تحديد تطبيق متعدد الحاويات في ملف YAML واحد. يمكنك تشغيل وإدارة التطبيق بأكمله بأمر واحد.

يمكنك استخدام Docker Compose لنشر التطبيقات المعقدة والمعبأة في حاويات وإدارتها. يبسط Docker Compose الإدارة من خلال عمليات النشر المؤتمتة والمتسقة.