黑马程序员技术交流社区

标题: 【上海校区】史上最简单的SpringCloud教程 | 第十一篇: docker... [打印本页]

作者: 不二晨    时间: 2018-8-28 09:43
标题: 【上海校区】史上最简单的SpringCloud教程 | 第十一篇: docker...
一、docker简介

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:

Docker 的优点

上面文字参考了相关文章;另,关于docker 的安装和基本的使用见相关教程

二、准备工作

环境条件:

本文采用的工程来自第一篇文章的工程,采用maven的方式去构建项目,并采用docker-maven-plugin去构建docker镜像。

三、改造工程、构建镜像改造eureka-server工程

在pom文件加上插件:

<build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>            <!-- tag::plugin[] -->            <plugin>                <groupId>com.spotify</groupId>                <artifactId>docker-maven-plugin</artifactId>                <version>0.4.3</version>                <configuration>                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>                    <dockerDirectory>src/main/docker</dockerDirectory>                    <resources>                        <resource>                            <targetPath>/</targetPath>                            <directory>${project.build.directory}</directory>                            <include>${project.build.finalName}.jar</include>                        </resource>                    </resources>                </configuration>            </plugin>            <!-- end::plugin[] -->        </plugins>    </build>

Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。

修改下配置文件:

server:  port: 8761eureka:  instance:    prefer-ip-address: true  client:    registerWithEureka: false    fetchRegistry: false编写dockerfile文件:FROM frolvlad/alpine-oraclejdk8:slimVOLUME /tmpADD eureka-server-0.0.1-SNAPSHOT.jar app.jar#RUN bash -c 'touch /app.jar'ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"EXPOSE 8761docker file编写指令:    FROM <image>    FROM <image>:<tag>    FROM <image> <digest>

FROM指令必须指定且需要在Dockerfile其他指令的前面,指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。后续的指令都依赖于该指令指定的image。当在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。

格式为:

     VOLUME ["/data"]

使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。

从src目录复制文件到容器的dest。其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包

指定Docker容器启动时执行的命令,可以多次设置,但是只有最后一个有效。

为Docker容器设置对外的端口号。在启动时,可以使用-p选项或者-P选项。

构建镜像

执行构建docker镜像maven命令:

mvn cleanmvn package docker:build

构建eureka-server镜像成功。

同理构建service-hi镜像eureka:  client:    serviceUrl:      defaultZone: http://eureka-server:8761/eureka/ # 这个需要改为eureka-serverserver:  port: 8763spring:  application:    name: service-hi

在这里说下:defaultZone发现服务的host改为镜像名。

mvn cleanmvn package docker:build

这时我们运行docke的eureka-server 和service-hi镜像:

docker run -p 8761: 8761 -t forezp/eureka-serverdocker run -p 8763: 8763 -t forezp/service-hi

访问localhost:8761

四、采用docker-compose启动镜像

Compose 是一个用于定义和运行多容器的Docker应用的工具。使用Compose,你可以在一个配置文件(yaml格式)中配置你应用的服务,然后使用一个命令,即可创建并启动配置中引用的所有服务。下面我们进入Compose的实战吧。

采用docker-compose的方式编排镜像,启动镜像:

version: '3'services:  eureka-server:    image: forezp/eureka-server    restart: always    ports:      - 8761:8761  service-hi:    image: forezp/service-hi    restart: always    ports:      - 8763:8763

输入命令: docker-compose up

发现2个镜像按照指定的顺序启动了。

源码下载:https://github.com/forezp/SpringCloudLearning/tree/master/chapter11

五、采用docker-compose编排并启动镜像

docker-compose也可以构建镜像,现在我们采用docker-compose的方式构建镜像。

现在以eureka-server为例:
将Dockerfile移到eureka-server的主目录,改写ADD的相对路径:

FROM frolvlad/alpine-oraclejdk8:slimVOLUME /tmpADD ./target/eureka-server-0.0.1-SNAPSHOT.jar app.jar#RUN bash -c 'touch /app.jar'ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"EXPOSE 8761

同理修改service-hi目录;

编写构建镜像docker-compose-dev文件:

version: '3'services:  eureka-server:    build: eureka-server    ports:      - 8761:8761  service-hi:    build: service-hi    ports:      - 8763:8763

命令构建镜像并启动:

docker-compose -f docker-compose.yml -f docker-compose-dev.yml up

源码下载:https://github.com/forezp/SpringCloudLearning/tree/master/chapter11-2



作者: 梦缠绕的时候    时间: 2018-8-30 11:34

作者: 不二晨    时间: 2018-8-30 17:13
奈斯,加油加油
作者: 小影姐姐    时间: 2018-8-30 18:07
奈斯,加油加油





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2