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

原创
2022/01/10 16:29
阅读数 47

这两天在学习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配置文件

vim /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 评论
0 收藏
0
分享
返回顶部
顶部