这两天在学习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 出来一个错误 ,
虽然这个错误好像没什么影响,
是我还是找了下解决办法
然后删除原先容器,重启容器,一切正常
结束