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 installrackup -o 0.0.0.0 -p 8080复制代码
这样就可以在本地直接运行起Ruby版本的hello world了.
3. Dockerfile
FROM ruby:2.3.1LABEL maintainer "zhoubjnb@163.com"WORKDIR /appADD . /appRUN bundle installEXPOSE 8080CMD ["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