使用Docker构建你的第一个服务

282 阅读1分钟

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"]

这个配置文件主要做了几件事

  1. 必须指定一个Base Image,我们用ruby:2.3.1这个镜像
  2. 本镜像的维护者信息
  3. 设定一个Docker镜像中的工作目录,作为接下来RUN和CMD指令的运行目录
  4. 把当前目录映射到容器中的/app
  5. 为Ruby工程安装依赖
  6. 暴露容器的8080端口出来
  7. 在容器中运行rackup命令开启服务

这样,无论我们的底层系统是什么,只要安装了Docker,就可以很方便的运行程序,无需关心各种依赖

参考

  • 《微服务架构与实践》 ThoughtWorks中的人写的一本书,很空泛,不推荐阅读...
  • Docker References(Dockerfile的各种指令意义) https://docs.docker.com/engine/reference/builder