我爱编程

使用docker、docker-compose部署、发布spri

2017-06-11  本文已影响0人  彩虹之梦

说起Docker,大家并不陌生。是目前在开源社区比较火爆的一个东东。它是一个开源的应用引擎,可以为应用系统创建一个可移植的独立的自主容器。容器运行在Linux上,相当于一个虚拟机。但是它与传统的虚拟机有区别。Docker启动速度快,占用资源少,所以非常适合来发布微服务。
如我们的spring boot项目,就十分适合部署在docker上。我想这是未来的一种趋势。


一个周末,终于搞明白了如何在docker上发布spring boot项目。由于本人水平有限,还是折腾了一下,文中描述的都是自己一步一步探索出来,经过验证通过。可能有的比描述的更简便,或者是描述的并不恰当,望大家多多指点一下,让小弟也学习一下,更进一步。谢谢。


  • 关于使用spring boot快速构建Restful API接口,在这里不在讲述,spring boot官方文档就是一个很好的例子。

1、创建Dockerfile

Dockerfile是一个文本文件。

[root@rainbow /]# mkdir web
[root@rainbow /]# cd web/
[root@rainbow web]# 
[root@rainbow web]# vi Dockerfile
FROM java:8
ADD rainbow-api-user-0.0.1-SNAPSHOT.jar rainbow-api-user.jar
RUN bash -c 'touch /rainbow-api-user.jar'
EXPOSE 8085
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/rainbow-api-user.jar"]

2、打包、上传spring boot项目的jar文件

  • 打包
    点击如下图:
image.png image.png image.png image.png
[root@rainbow web]# mkdir webapp
[root@rainbow web]# mv Dockerfile webapp/

将jar文件上传到webapp目录下。此时,webpp下有如下两个文件:

image.png

现在,我们可以使用docker来构建项目了。由于我们本次的目的是使用docker-compose构建,所以只写出构建命令
在webapp路径下执行:

docker build -t spring .

3、使用docker-compose构建

首先,新建一个docker-compose.yml文件。由于这是个yaml文件,所以格式、缩进很重要。为了不出错,所以在spring boot项目的resources目录下新建一个docker-compose.yml文件,配置好相关项之后,再上传到服务器。内容如下:

spring:
  build: ./webapp
  ports:
   - "80:8085"
image.png
[root@rainbow web]# docker-compose up -d
Building spring
Step 1 : FROM java:8
 ---> d23bdf5b1b1b
Step 2 : ADD rainbow-api-user-0.0.1-SNAPSHOT.jar rainbow-api-user.jar
 ---> e2d71b21b18d
Removing intermediate container a67714060589
Step 3 : RUN bash -c 'touch /rainbow-api-user.jar'
 ---> Running in 80373f7f206f
 ---> 00e9ab13963d
Removing intermediate container 80373f7f206f
Step 4 : EXPOSE 8085
 ---> Running in a161e595c79c
 ---> b77fe6b6f8e3
Removing intermediate container a161e595c79c
Step 5 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /rainbow-api-user.jar
 ---> Running in e25617bae6a2
 ---> a5a04f6f82a1
Removing intermediate container e25617bae6a2
Successfully built a5a04f6f82a1
WARNING: Image for service spring was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating web_spring_1 ... 
Creating web_spring_1 ... done
[root@rainbow web]# 
docker-compose ps
[root@rainbow web]# docker-compose ps
    Name                  Command               State          Ports         
web_spring_1   java -Djava.security.egd=f ...   Up      0.0.0.0:80->8085/tcp 
[root@rainbow web]# 
docker-compose logs -f spring
image.png
docker-compose stop spring
docker-compose start spring
image.png

4、使用外网能够访问docker容器中的spring boot项目

企业一般应该是使用VPN工具来映射IP地址,然后就可以通过外网访问了。由于我们没有公网IP,所以我在此使用了花生壳这个工具,将宿主机的IP和端口映射到花生壳,就可以使用域名从外网访问docker容器中的spring boot项目了。

花生壳中有个内网映射功能。映射之前要先开通花生壳的内网穿透功能。我把我宿主机的IP:192.168.31.88,因为spring boot项目的端口是8085,但是经过docker容器映射到了宿主机的80端口,所以我们只需要映射宿主机的80端口即可。

image.png image.png

到此,spring boot项目在docker容器中的部署已完成。由于本人水平有心,不足支持网大家多多指导一下小弟,谢谢!!

上一篇下一篇

猜你喜欢

热点阅读