docker部署springcloud项目
目录
在开发springcloud项目的时候总是会因为服务器不够用而烦恼。这里就教大家如何通过一台服务器通过docker部署springcloud项目,实现一个镜像打包然后动态传入启动端口实现,达到一个镜像到处使用的效果。
一、编写Dockerfile,构建镜像
1.创建一个Dockerfile名称的文件:
vi Dockerfile
2.构建镜像的配置:
#Dockerfile文件内容如下
FROM java:8
VOLUME /temp
ADD bootstrap-config/ /bootstrap-config/
ADD duck-provider.jar duck-provider.jar
#EXPOSE 1001
ENV PARAMS=""
ENTRYPOINT ["sh","-c","java -jar duck-provider.jar --spring.config.name=bootstrap,bootstrap-provider --spring.config.location=/bootstrap-config/ $PARAMS"]
参数解释
FROM java:8
基础镜像为jdk8,毕竟jar包运行需要java环境
VOLUME /temp
指向了容器内的/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
ADD duck-provider.jar duck-provider.jar
将本地的duck-provider.jar复制到容器内部并改名为duck-provider.jar
EXPOSE 10086
暴露10086端口,即注册服务端口。这不代表镜像里面项目的运行端口。这里指的是镜像开发哪些端口,多个端口可以逗号隔开。也可以不指定开通哪些端口,这样就可以灵活运用端口,便于负载部署。
ENV PARAMS=""
定义一个变量,用于接收启动时候传入的值。
ENTRYPOINT
启动容器时执行的命令,相当于 java -jar duck-provider.jar,–spring.config.name指定配置文件名称,多个配置文件逗号隔开。–spring.config.location指定配置文件目录,多个配置文件逗号隔开,注意路径必须以/结束。$PARAMS 表示引用上面定义的变量PARAMS ,便于后面动态传入启动端口–server.port=8080
二、通过Dockerfile创建镜像
1.文件准备
把Dockerfile、jar包、配置文件置于同一目录。

2.执行打包命令:
docker build -t duck-provider:1.0 .
3.等待完成,查看镜像
docker images

三、启动镜像并动态传入启动端口
启动命令如下:如果需要集群部署就修改server.port的端口即可多次启动多个项目形成集群部署
docker run -d -e PARAMS="--server.port=10086" -p 10086:10086 --name duck-provider duck-provider:1.0 .
参数说明:
-d 后台运行
-p 端口映射
–name 别名
-e 指定dockerfile 的ENV 的参数值,这里我们用于动态传入启动端口值。
本文介绍了如何通过Docker部署SpringCloud项目,利用Dockerfile构建镜像,并动态传入启动端口。首先,创建Dockerfile,包括设置基础镜像为Java 8,挂载临时目录,添加jar文件并暴露10086端口。接着,通过Dockerfile创建镜像,确保Dockerfile、jar和配置文件在同一目录。最后,启动镜像时通过命令行参数动态传入服务器端口,实现灵活部署。
748

被折叠的 条评论
为什么被折叠?



