Dockerfile 其实一个文本文件,其中包含了若干个符合 Docker 解析规范的指令,指令描述了构建镜像的步骤或者一些细节。
#### Nginx 小例子
首先,我们新建一个简单的 Dockerfile,文件名就叫做`Dockerfile`,其内容如下:
~~~bash
FROM nginx
RUN echo '<h1>SpringCloud-Docker</h1>' > /usr/share/nginx/html/index.html
~~~
上面的 Dockerfile 基于 nginx 镜像修改了 index.html 首页,首页显示`SpringCloud-Docker`内容。
我们可以通过 Docker 来构建此镜像并运行:
~~~bash
docker build -t nginx-demo .
docker run -p 8080:80 nginx-demo
~~~
随后访问`http://localhost:8080`得到如下响应:

或者控制台执行如下指令:
~~~bash
curl localhost:8080
~~~
响应如下:
~~~bash
<h1>SpringCloud-Docker</h1>
~~~
#### 常见指令
上面的 Dockerfile 提到了 FROM、RUN 指令。事实上,Dockerfile 有十多个指令,一般格式是:`指令名称 参数`。
* FROM 指定基础镜像:`FROM <image>:<tag>`
比如基于 Java JDK 环境的镜像:`openjdk:8-jre-alpine:latest`
* ADD 复制文件:`ADD <src> <dest>`
从`src`目录复制文件到容器的`dest`目录,其中 src 可以是 Dockerfile 所在目录的相对路径,也可以是一个 URL,还可以是一个压缩包。
* COPY 复制文件:`COPY <src> <dest>`
COPY 和 ADD 指令类似,COPY 不支持 URL 的压缩包。
* ENTRYPOINT 入口点:`ENTRYPOINT command param1 param2`
指定 Docker 容器启动时执行的命令。
更多指令可以参考[官方文档](https://docs.docker.com/engine/reference/builder/),这里不一一讲解。接下来开始对我们前面的 Eureka Server 微服务进行改造,使其运行在 Docker 容器中。
- 微服务开发框架 SpringCloud
- 单体应用
- 如何解决单体应用架构中存在的问题
- 如何实现微服务架构以及技术选型
- Spring Cloud 特点
- 开始使用 Spring Cloud 实战微服务
- 快速搭建开发脚手架
- 编写服务提供者-用户微服务
- 编写服务消费者【电影微服务】
- 整合 Spring Boot Actuator
- 开始整合
- 微服务注册与发现
- 编写服务发现服务
- 注册微服务至 Eureka Server
- 更新服务提供者 (用户微服务)
- 更新服务消费者 (电影微服务)
- 查看注册结果
- Ribbon 客户端负载均衡
- Ribbon 简介
- 引入 Ribbon
- Ribbon 入门
- Feign 声明式 REST 调用
- 改造项目
- Hystrix 容错处理
- 实现容错的手段
- Hystrix 简介
- 开始使用
- 测试
- Zuul 网关
- 网关是什么
- Spring Cloud Zuul 介绍
- Zuul 入门使用
- 网关测试
- Spring Cloud Config 配置管理
- 配置中心的作用
- Spring Cloud Config 简介
- Spring Cloud Config 使用
- Sleuth 与 Zipkin 结合图形化展示
- 分布式追踪相关基础概念
- Spring Cloud Sleuth 介绍及使用
- Zipin 简介
- Docker 入门
- 云原生概念
- Docker 容器介绍
- Docker 常用命令
- 微服务运行在 Docker 之上
- Dockerfile 及其常见指令介绍
- 改造 Eureka Server 微服务
- Docker Compose 编排微服务
- 安装 Compose
- Compose 快速入门
- Compose 编排 SpringCloud微服务
- 将 Eureka 等微服务运行在 Docker 容器中
- Docker-Compose 编排文件的编写
- 通过 Docker Compose 启动、停止
- Compose编排Spring Cloud微服务2
- Docker-Compose 来部署一个双节点的 Eureka 集群
