2014年6月26日 星期四

[Go] Docker x Golang x OSX

稍微完了一下Golang之後寫了個TCP的小程式,就順便來玩玩最近蠻夯的Docker

跟寫Go的時候比起來,真的是遇到不少挫折XD

1.Install

到 Docker ( http://www.docker.com/ ) 找到OSX的版本下載安裝就完成了

2.Run

這裡我什麼都不會,所以我直接使用Google提供的Image\
google / golang ( https://registry.hub.docker.com/u/google/golang/ )


先在Go的專案資料夾底下建立一個叫做Dockerfile的檔案
裡面鍵入
FROM google/golang

WORKDIR /gopath/src/app
ADD . /gopath/src/app/
RUN go get app

CMD []
ENTRYPOINT ["/gopath/bin/app"]
在終端機中移到專案資料夾下執行
docker build -t my/app .
這樣就成功產生了一個image

接著把剛剛產生的image建立起來
docker run -t -p 8080:8080 my/app
理論上,這樣應該就大功告成了

But,有這麼單純就好了,嘗試連接localhost:8080會發現沒辦法連到程式
這裡我弄了好久,最後發現在OSX上Docker是跑在VM上的
我們只有在run的時候把Docker跟程式的Port接上
但是在OSX下還有一層VM,接下來要做的就是把VM的Port接上

先停止boot2docker的運作
boot2docker stop
接著執行
VBoxManage modifyvm "boot2docker-vm" --natpf1 "guestnginx,tcp,,8080,,8080"
在運作boot2docker
boot2docker start
再度嘗試連結到localhost:8080,應該就可以正常的與程式連線了

PS.
如果出現以下類似的訊息,代表你沒有export DOCKER_HOST
Get http:///var/run/docker.sock/v1.12/containers/json: dial unix /var/run/docker.sock: no such file or directory
往上翻翻啟動boot2docker的時候,應該有出現像是export DOCKER_HOST=tcp://:2375的字串,輸入他就可以正常運作了


參考資料:
DOCKER ON OSX: PORT FORWARDING ( http://fogstack.wordpress.com/2014/02/09/docker-on-osx-port-forwarding/ )

[Go] Golang on OSX

最近上班有點無聊,所以有時間玩點新東西(噓)


1.Install

到 http://golang.org 把 Mac OS X package installer 抓下來安裝就結束了


2.IDE

Sublime Text 2 ( http://www.sublimetext.com/2 )

網路上有說要抓插件之類的,我試過了一下覺得不太適合我就沒裝了

3.Run
go run helloworld.go

就這樣,意外的簡單XD