docker部署springcloud项目,实现动态传入项目启动端口

本文介绍了如何通过Docker部署SpringCloud项目,利用Dockerfile构建镜像,并动态传入启动端口。首先,创建Dockerfile,包括设置基础镜像为Java 8,挂载临时目录,添加jar文件并暴露10086端口。接着,通过Dockerfile创建镜像,确保Dockerfile、jar和配置文件在同一目录。最后,启动镜像时通过命令行参数动态传入服务器端口,实现灵活部署。


目录

在开发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 的参数值,这里我们用于动态传入启动端口值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值