spring boot 整合Dockerfile 同时编译镜像到远程服务器上面

这两天在学习springboot和docker的整合,这在此学习记录下

  • 好了废话不多说,开始上代码
第一步: 找到你的maven的settings文件 然后添加以下配置
  <pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
	<pluginGroup>com.spotify</pluginGroup>
  </pluginGroups>

这里注意一下pluginGroups是有的 你做的是在pluginGroups里面添加

<pluginGroup>com.spotify</pluginGroup>
第二步:在pom文件添加配置

在这里插入图片描述

 <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <configuration>
                    <!--打包名字-->
                    <repository>${project.artifactId}-0.1</repository>
                      <!--定义参数,一会编写Dockerfile 会用到-->
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        <JAR_APRPE>src/main/resources/application.properties</JAR_APRPE>
                    </buildArgs>
                         <!--标签-->
                      <tag>0.2</tag>
                </configuration>
            </plugin>
第三步:编写Dockerfile
FROM openjdk:11.0.13-jre-slim

# 其效果是在主机  目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME ["/tmp","/java"]
# 进入工作目录 
WORKDIR /java
#开放对外端口
EXPOSE 11000

#定义参数 在pom文件配置的
ARG JAR_FILE
#配置文件路径
ARG JAR_APRPE

COPY ${JAR_FILE} /java/app.jar


COPY ${JAR_APRPE} /java/application.properties
# , "--spring.config.location=/java/application.properties"
CMD ["java", "-jar", "/java/app.jar"]

这里简单说明下这个文件WORKDIR 这个参数
因为最开始的时候我是没有配置这个的参数
但是后来我想把配置文件从宿主机映射到容器里面,
然后配置文件死活不生效- -!
后来想了想,才意思到
,cmd 这个java -jar /java/aoo.jar 这个命令是运行容器的根目录下面的
如果不指定配置文件,压根就读不到

–spring.config.location=/java/application.properties
上面那个命令是最开始的解决方案
完整命令如下
CMD [“java”, “-jar”, “/java/app.jar”,"spring.config.location=/java/application.properties "]

后来感觉这样不对劲,后来查询了下,才发现还有WORKDIR 这个参数

第四步:这里要配置你的远程服务器上面的docker,开放远程端口

这里简单说下,我上面到操作都是在windows7操作的,到这一步远程服务器说的是我一个已经正常安装了docker服务liunx主机

vim编辑docker配置文件/lib/systemd/system/docker.service,并修改ExecStart为下面的内容
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

这里注意下,我这个liunx主机是我直接的主机,并且不需要外网连接
所以我直接开放了 2375这个默认端口,
如果你的主机是公网,最好换个端口,并且添加认证
不然很容易被植入挖矿程序的
下一个文章我会说下如何添加认证,这里就不多做说明了

第五步:重启docker 服务

1 :加载docker守护线程
systemctl daemon-reload
2 :重启docker
systemctl restart docker
3:重启服务后测试端口是否开启成功
telnet 192.168.11.88 2375
4:给你打包的电脑环境配置变量 添加 DOCKER_HOST,值为tcp://192.168.11.88:2375
5:使用maven编译打包环境
打开cmd窗口,确定环境变量配置生效:输入 echo %DOCKER_HOST%,会输出 tcp://192.168.11.88:2375
然后使用命令 mvn clean package dockerfile:build -Dmaven.test.skip=true 编译项目并构建docker镜像,编译结束自动推送镜像到docker主机中。

[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:10 min
[INFO] Finished at: 2022-01-10T15:58:28+08:00
[INFO] Final Memory: 59M/938M
[INFO] ------------------------------------------------------------------------
E:\prject\spring_boot\ddd\demo>
这就编译成功,并且你的镜像已经成功上传到服务器了
在这里插入图片描述

输入命令启动
docker run -itd --name demo -p 3344:11000 demo-0.1:0.2

在这里插入图片描述

启动成功,如果访问不了,就看是不是liunx防火墙阻止
,这里启动的时候的在说下
我启动docker 出来一个错误 ,虽然这个错误好像没什么影响,
是我还是找了下解决办法
在这里插入图片描述

解决办法
然后删除原先容器,重启容器,一切正常
在这里插入图片描述
结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值