Docker实践(七)部署SpringBoot微服务

目录

打包

编写DockerFile

构建镜像

创建容器并启动容器

测试


打包

使用maven或者其他构建工具,打包可运行jar或者war,这里使用可运行jar进行部署。

编写DockerFile

创建构建目录,复制jar包到构建目录,并编写Dockerfile如下;

#基础镜像,在openjdk8的基础上构建
FROM openjdk:8

#维护人信息
MAINTAINER weihao [email protected]

#复制jar包到容器根目录下
COPY ./WebsiteFetcher-1.0-SNAPSHOT.jar app.jar

#启动命令
CMD java -jar app.jar

DockerFile的结构,文件中各个命令的含义,请参考《Docker实践(四)Dockerfile》

构建镜像

进入docker,使用

docker build -t app:1 .

命令构建镜像,其中-t指定镜像的名称和标签,“.”指定在当前目录下构建镜像,构建完成后使用docker images查看镜像。

[root@ecs-7bc6-0001 weihao]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
app                 1                   07cb5f17ac9a        5 minutes ago       514MB

创建容器并启动容器

使用命令

[root@ecs-7bc6-0001 weihao]# docker run -itd --net=host -v $PWD/logs:/home/work/logs app:1

创建并启动容器,其中

-i,打开容器标准输入

-t,为容器分配伪终端

-d,容器后台运行

--net=host,容器网络模式选择host模式,也可选择其他网络模式。

-v $PWD/logs:/home/work/logs,将当前目录的logs目录,映射到容器的/home/work/logs日志目录。根据实际情况配置。

app:1,镜像名称和标签

Docker网络模式

--net=bridge,网桥模式,docker安装成功之后,会给系统添加一个名字叫docker0的网桥,当创建一个新容器时,容器通过DHCP获取一个和docker0同网段的IP。并默认连接到docker0,以此来实现容器和宿主即的通信。

--net=host,host模式,这个模式下创建出来的容器,没有自己的网络环境,使用宿主机的网络IP和端口。

--net=container:NAME_OR_ID,container模式,指定一个已有的容器,共享该容器的IP和端口。除了网络共享以外,文件系统,进程等还是隔离开的。

--net=none:none模式,这个模式下,docker不为容器分配网络环境,需要开发人员自己添加网卡,配置IP,因此想用pipework配置容器的IP地址,必须再none模式下进行。

启动后发现容器已经运行

[root@ecs-7bc6-0001 weihao]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
9b7258cfa0e3        app:1               "/bin/sh -c 'java -j…"   9 minutes ago       Up 9 minutes                                            naughty_elbakyan

测试

查看日志目录,发现构建目录下logs目录

发现构建目录的logs目录下已经写入日志

[root@ecs-7bc6-0001 logs]# ls */*
fetcher/access_log  fetcher/error_log  fetcher/service_log

测试服务,在宿主机本机测试

[root@ecs-7bc6-0001 weihao]# curl http://127.0.0.1:9080/test
Hello World

在容器内测试

root@ecs-7bc6-0001:/# curl http://127.0.0.1:9080/test
Hello World

因为网络使用的host模式,在其他网络的主机通过宿主机的IP测试。

Docker实践(七)部署SpringBoot微服务_第1张图片

测试成功。

(完)(^_^)

你可能感兴趣的:(docker,服务搭建)