docker部署SpringCloud项目

Posted 光何

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker部署SpringCloud项目相关的知识,希望对你有一定的参考价值。

一、需求

通常,部署微服务到docker有以下方式:

  1. 手动部署:本地IDE打包成jar,在docker环境中创建java环境容器,将jar包使用命令行拷贝至docker容器中,启动。
  2. 自动部署:通过Maven插件配置参数自动部署。(优先选这个)

二、安装docker及jdk容器

安装docker方法请浏览前面的文章。

安装jdk容器:docker pull openjdk:11

 

 

 三、开放docker远程部署端口

1,编辑docker配置文件:vim /lib/systemd/system/docker.service

2,修改ExecStart,添加参数(CentOS7): -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

tcp://0.0.0.0:2375表示:表示允许任何远程客户端通过 2375 端口连接 Docker Daemon。

unix://var/run/docker.sock表示:本地客户端将通过这个来连接 Docker Daemon

备注:该方法有漏洞,容易被黑客远程放入挖矿机镜像,开启需做好防范,最好使用防火墙限制ip

3,重启docker服务以刷新配置

systemctl daemon-reload
systemctl restart docker

测试远程访问是否生效:curl http://127.0.0.1:2375/info

四、Springboot项目配置

1,添加docker的maven依赖

 1 <!-- 定义docker镜像的前缀 -->
 2 <properties>
 3     <docker.image.prefix>docker</docker.image.prefix>
 4 </properties>
 5 <!-- Docker maven plugin -->
 6 <plugin>
 7     <groupId>com.spotify</groupId>
 8     <artifactId>docker-maven-plugin</artifactId>
 9     <version>1.0.0</version>
10     <configuration>
11         <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
12         <dockerDirectory>src/main/docker</dockerDirectory>
13         <resources>
14             <resource>
15                 <targetPath>/</targetPath>
16                 <directory>${project.build.directory}</directory>
17                 <include>${project.build.finalName}.jar</include>
18             </resource>
19         </resources>
20     </configuration>
21 </plugin>

2,在目录src/main/docker下创建 Dockerfile 文件,Dockerfile 文件用来说明如何来构建镜像

1 FROM openjdk:11
2 VOLUME /tmp
3 ADD erueka.jar app.jar
4 ENTRYPOINT ["sh","-c","java $PARAMS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]

FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载

VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录

ADD ,拷贝文件并且重命名

ENTRYPOINT ,定义一个 $PARAMS 参数,启动docker镜像,执行java -jar eureka.jar时 可以传递进来,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

$PARAMS,以前使用 java -jar xx.jar --server.port=8081,自定义启动参数,现在使用docker run时,通过 $PARAMS 来达到同样效果,这样 Spring Boot 项目添加 Docker 依赖就完成了,把项目的pom.xml 与 src 目录复制到虚拟机上去。

3,执行 mvn package docker:build 生成docker镜像

五、启动docker镜像

使用 docker images 查看打包的镜像

使用 docker run -e PARAMS=’-Xms128m -Xmx256m’ -p 8080:8080 example/apiaccept 运行镜像,此时的 PARAMS就会传递启动jar的参数

使用 docker ps 查看运行的镜像

 

以上是关于docker部署SpringCloud项目的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud+Docker项目部署经验

docker初体验:Docker部署SpringCloud项目eureka-server

Docker+jenkins自动化部署SpringCloud微服务项目

使用Docker Compose部署SpringCloud项目docker-compose.yml文件示例

SpringCloud教程 | 第十一篇: docker部署spring cloud项目

Jenkins—— Jenkins+Docker+SpringCloud微服务持续集成项目优化和集群