1. 感受一下Docker的便捷
項目源碼 https://github.com/MoonShining/dockernize-grape-helloworld
clone下來以后運行,cd到項目目錄下,運行
docker build -t api-sample .
docker run -p 8080:8080 api-sample:latest
復制代碼
就可以訪問localhost:8080看到效果了.
2. 具體步驟
- 使用你喜歡的語言寫一個能輸出hello world的HTTP服務
- 告訴docker你需要如何構建這個服務(Dockerfile) 因為Ruby程序員不多,我就不講解ruby代碼了,只需要知道一點.
在clone項目以后運行
bundle install
rackup -o 0.0.0.0 -p 8080
復制代碼
這樣就可以在本地直接運行起Ruby版本的hello world了.
3. Dockerfile
FROM ruby:2.3.1
LABEL maintainer "zhoubjnb@163.com"
WORKDIR /app
ADD . /app
RUN bundle install
EXPOSE 8080
CMD ["rackup","-o","0.0.0.0","-p","8080"]
復制代碼
這個配置文件主要做了幾件事
- 必須指定一個Base Image,我們用ruby:2.3.1這個鏡像
- 本鏡像的維護者信息
- 設定一個Docker鏡像中的工作目錄,作為接下來RUN和CMD指令的運行目錄
- 把當前目錄映射到容器中的/app
- 為Ruby工程安裝依賴
- 暴露容器的8080端口出來
- 在容器中運行rackup命令開啟服務
這樣,無論我們的底層系統是什么,只要安裝了Docker,就可以很方便的運行程序,無需關心各種依賴
參考
- 《微服務架構與實踐》 ThoughtWorks中的人寫的一本書,很空泛,不推薦閱讀...
- Docker References(Dockerfile的各種指令意義) https://docs.docker.com/engine/reference/builder