كيف يمكنك إرساء تطبيق Go (golang) الخاص بك

Golang على عامل الميناء

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

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

ابدأ بالتطبيق

إليك تطبيق Hello World البسيط:

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

تشغيل عامل ميناء - rm -it -v $ PWD: /go/src/github.com/treeder/dockergo -w /go/src/github.com/treeder/dockergo treeder / glide init
# قل لا للسؤال الذي يطرحه ، ثم:
تشغيل عامل ميناء - rm -it -v $ PWD: /go/src/github.com/treeder/dockergo -w /go/src/github.com/treeder/dockergo treeder / glide update

سيكون لديك الآن تبعياتك في دليل / vendor ، حيث ستبحث أدوات go عن التبعيات. ستعمل هذه الأوامر كما هو الحال في أي دليل ، ولكن عندما تبدأ في إنشاء التعليمات البرمجية الخاصة بنا ، ستحتاج إلى استبدال treeder / dockergo باسم المستودع الخاص بك.

الطريقة 1: بناء داخل Dockerfile الخاص بك

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

انسخ ما يلي إلى ملف يسمى Dockerfile.

# iron / go: dev هي صورة جبال الألب مع إضافة أدوات go
من الحديد / الذهاب: ديف
العمل / التطبيق
# تعيين env var الذي يطابق اسم github repo ، استبدل treeder / dockergo هنا باسم الريبو
ENV SRC_DIR = / go / src / github.com / treeder / dockergo /
# أضف الكود المصدري:
أضف. $ SRC_DIR
# بنائها:
RUN cd $ SRC_DIR؛ اذهب بناء -o myapp. cp myapp / app /
نقطة الدخول ["./myapp"]

الآن دعونا نبنيها:

عامل بناء بناء t- treeder / dockergo.

والآن يمكننا تشغيله واختباره:

تشغيل عامل الميناء - rm -p 8080: 8080 treeder / dockergo

تصفح إلى http: // localhost: 8080 / لرؤيته قيد التشغيل.

الطريقة 2: بناء خارج Dockerfile الخاص بك

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

قم بتشغيل الأمر التالي للبناء:

عامل ميناء - rm -v "$ PWD": / go / src / github.com / treeder / dockergo -w /go/src/github.com/treeder/dockergo iron / go: dev go build -o myapp
عامل بناء بناء -t $ USERNAME / $ IMAGE: الأحدث.

الآن سيتم بناء الملف الثنائي المسمى myapp في الدليل الحالي.

انسخ ملف Dockerfile الخاص بك بهذا الآن:

# iron / go هي صورة جبال الألب مع إضافة شهادات ca فقط
من الحديد / الذهاب
العمل / التطبيق
# الآن فقط إضافة ثنائي
إضافة myapp / التطبيق /
نقطة الدخول ["./myapp"]

الآن دعونا نبنيها:

عامل بناء بناء t- treeder / dockergo.

وتشغيله واختباره:

تشغيل عامل الميناء - rm -p 8080: 8080 treeder / dockergo

تصفح إلى http: // localhost: 8080 / لرؤيته قيد التشغيل.

طرق متعددة للجلد صورة

كما ترون ، لقد بنينا صورتنا بطريقتين مختلفتين مع نفس البرنامج بالضبط في الداخل. لكن إحدى الطرق أفضل من الأخرى بسبب الإنهاء مع صورة أصغر بكثير. كم أصغر بكثير؟ ~ 300 ميغابايت أصغر.

أنا أقول هذا يستحق كل هذا العناء.

ماذا الآن؟

حسنًا ، لذا حولت تطبيقك إلى صورة Docker ، ماذا بعد؟

حسنًا ، الشيء التالي الذي ربما تريد القيام به هو دفعه إلى "سجل عامل الميناء". Docker Hub هو الافتراضي لذا حاول أولاً.

عامل ميناء دفع YOUR_USERNAME / عامل ميناء

اذهب الآن اطلب من صديق تجربة تطبيقك عن طريق تشغيل هذا الأمر:

تشغيل عامل ميناء - rm -it -p 8080: 8080 YOUR_USERNAME / dockergo

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