使用Docker、CoreOS、Mesos部署可擴展的Web應用(二)

為我的Web應用程序創(chuàng)建Docker鏡像


這里是我用來構(gòu)建Docker鏡像的Dockerfile:

FROM?golang

WORKDIR?/

RUN git clone https://djannot:xxxx@github.com/djannot/s3pics.gitWORKDIR/s3pics

RUN?go?build

EXPOSE 8080

構(gòu)建鏡像時我使用了--no-cache參數(shù),以確保最新的源代碼是從GitHub上克隆的。

core@coreos1 /media/share1/Dockerfiles/s3pics?$?docker?build--no-cache.

Sending build?context?to Docker daemon 2.048kB?

Sending build?context?to Docker daemon?

Step0:FROM?golang

--->1ea210e0e1f6

Step1:WORKDIR /

--->Running ?in ?f6987b175723

--->022aa96f56d0

Removing intermediate?container?f6987b175723

Step2:RUN git clone https://djannot:xxxx@github.com/djannot/s3pics.git

--->Running in 54d6a32e90ba

Cloninginto's3pics'...

--->3369bca87577

Removing intermediate?container 54d6a32e90ba

Step3:WORKDIR /s3pics

--->Running in d875bc08eac9

--->73946142ea54

Removing intermediate?container?d875bc08eac9

Step4:RUN?go?build

--->Running in e0bd59c1f28b

--->baebdd1b633e?

Removing?intermediate?container?e0bd59c1f28b

Step5:EXPOSE 8080

--->Running in 16d3fa9be1c5

--->815b7aed2c83

Removing intermediate?container 16d3fa9be1c5

Successfully built 815b7aed2c83

最后,我推送鏡像到Docker registry。

core@coreos1/media/share1/Dockerfiles/s3pics?$?docker?push 10.64.231.45:5000/s3pics:2.0

The push?refers?to?a?repository [10.64.231.45:5000/s3pics] (len:1)

Sending image list

Pushing repository 10.64.231.45:5000/s3pics (1tags)?

Image 511136ea3c5aal ready?pushed,skipping

Image 16386e29a1f4already?pushed,skipping

Image 835c4d274060 already?pushed,skipping

Image 22c23ce0a90c already?pushed,skipping

Image 3f1e6432f26e already?pushed,skipping

Image 7982826b1e59 already?pushed,skipping

Image 1dafbd563f5a already?pushed,skipping

Image 7a94d87545e8 already?pushed,skipping

Image e2d60f7b3d07?already?pushed,skipping

Image 4f23222e2f74 already?pushed,skipping

Image 258b590ccdee already?pushed,skipping

Image 986643313a7b already?pushed,skipping

Image 1ea210e0e1f6 already?pushed,skipping

022aa96f56d0: Image successfully?pushed

3369bca87577:Image successfully?pushed

73946142ea54:Image successfully?pushed

baebdd1b633e:Image successfully?pushed

815b7aed2c83:Image successfully?pushed

Pushing tag forrev[815b7aed2c83] on {http://10.64.231.45:5000/v1/repositories/s3pics/tags/2.0}

我已經(jīng)指定了一個tag(2.0),以確保集群中的每個節(jié)點都會從Docker Registry獲取最新版本。

部署Mesos應用程序


現(xiàn)在,讓我們使用Docker鏡像部署一個Mesos應用:

POST http://<Mesos Marathon IP>:8080/v2/apps

{"id":"s3pics",

"cmd":"cd?/s3pics;?./s3pics?-AccessKey=denis@ad.forest?-SecretKey=xxxx?-EndPoint=http://denisnamespace.ns.viprds.ad.forest?-Namespace=denisnamespace",

"cpus":0.1,

"mem":64.0,

"instances":1,

"container":{

? ? ?"type":"DOCKER",

? ? ?"docker":{

? ? ? ? ? ?"image":"10.64.231.45:5000/s3pics:2.0",

? ? ? ? ? ?"network":"BRIDGE",

? ? ? ? ? ? "portMappings":[{"containerPort":8080,"hostPort":0,"protocol":"tcp"}]

}

},

"healthChecks":[{

"protocol":"HTTP",

"portIndex":0,

"path":"/",

"gracePeriodSeconds":10,

"intervalSeconds":20,

"maxConsecutiveFailures":3}]

}

當Mesos應用程序啟動后,Mesos Marathon UI就會顯示應用程序的狀態(tài)。


幾秒鐘之后,應用部署成功,Docker主機和端口顯示在UI中。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容