احسان رضایی

یک توسعه دهنده، شاید هم نه.

کتاب الگوهای طراحی به بیان ساده(design patterns/دیزاین پترن)

در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حل‌های قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرم‌افزار اتفاق می افتند.

طرح های از پیش ساخته شده‌ای که می‌توانید برای حل مشکلات آن‌ها را سفارشی کنید. شما نمی‌توانید یک الگو را با جستجو در stackoverflow پیدا و در برنامه خود کپی کنید. الگو ها یک قطعه کد خاص نیستند، مفاهیم کلی برای حل مشکلات خاص هستند. شما باید با درک این مفاهیم آن‌ها را در برنامه خود پیاده‌سازی کنید.



استقرار وب اپلیکیشن golang با استفاده از docker-compose

در golang , / تاریخ ارسال 1398/11/17 - 22:13 / 0 نظر / 25 بازدید / آخرین ویرایش 1399/02/25 - 05:36

برای deploy روش های زیادی وجود داره که اغلب وارد پیچیدگی هایی میشن. من تصمیم دارم کوتاه و ساده در موردش بنویسم و از تنظیمات جانبی اون صرف نظر میکنم.

در مرحله اول به یک http server نیاز داریم. من خودم مخالف استفاده از فریمورک های golang هستم ولی الان دم دسته و مثال رو با gin انجام میدم. شما هر طور خواستین بنویسید.

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main()  {
	router := gin.Default()
	router.GET("/", func(context *gin.Context) {
		context.JSON(http.StatusOK, gin.H{
			"status": "OK",
		})
	})

	router.Run(":8080")
}

به Dockerfile نیاز داریم. پیشفرض به پورت 8080 گوش میده و app رو اجرا میکنه(پورت http server هم روی 8080 ست شده).

FROM golang:1.13
ENV APP_NAME app
ENV PORT 8080
WORKDIR /go/src/app

CMD ./${APP_NAME}
EXPOSE ${PORT}

و در انتها docker-compose.yml رو مینویسیم. به volumes دقت کنید. کنار docker-compose باید http server که پیشفرض app هست وجود داشته باشه. میتونید پورت و نام فایل رو داخل docker-compose در قسمت environment تغییر بدین.

version: '3'
services:

  golang:
    build:
      context: .
      dockerfile: Dockerfile
    image: app/golang
    environment:
      - APP_NAME=server
    ports:
      - "8080:8080"
    volumes:
      - ./:/go/src/app

مورد دیگه ای نداره docker-compose build و بعدش docker-compose up کنید.

ehsan@elik310:~/go/src/job$ docker-compose ps
       Name                      Command               State                Ports              
-----------------------------------------------------------------------------------------------
app_golang_1          /bin/sh -c ./${APP_NAME}         Up      0.0.0.0:8080->8080/tcp

 

ارسال نظر