maven项目打包生成docker镜像上传到Linux服务器

 

1、完成编码后,在pom文件中增加:

<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.13</version>
				<configuration>
					<forceTags>true</forceTags>
					<imageName>eureka:0.0.1</imageName>  <!--指定镜像名称 仓库/镜像名:标签 -->
					<baseImage>hub.c.163.com/library/java:8-alpine</baseImage>
					<dockerHost>http://192.168.1.100:2375</dockerHost>  <!-- 指定仓库地址 -->
					<dockerDirectory>target</dockerDirectory>
					<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint> <!-- 容器启动执行的命令,相当于dockerFile的ENTRYPOINT -->
					<resources>
						<resource>
							<targetPath>target</targetPath>
							<directory>${project.build.directory}</directory>  <!-- 指定要复制的根目录,这里是target目录 -->
							<include>${project.build.finalName}.jar</include>  <!-- 指定需要拷贝的文件,这里指最后生成的jar包 -->
						</resource>
					</resources>
				</configuration>
			</plugin>

 

2、在target目录下,创建Dockerfile,内容如下

FROM hub.c.163.com/library/java:8-alpine

ADD target/eureka-0.0.1-SNAPSHOT.jar app.jar

EXPOSE 8761

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

如果想指定容器加载挂载目录的配置文件,启动命令可以这么写

 

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=/home/conf/","--spring.config.name=application"]

说明:

a、--spring.config.location的值是容器内的配置文件目录

b.、--spring.config.name的是问配置文件目录内的配置文件名称(不含文件名后缀)

当有多个配置文件时,可以这么写--spring.config.name=bootstrap,application

c、编写dockerfile时,要学会使用[WORKDIR /home],即定位到该目录下

3、Linux服务器设置(选择哪个就看机器的配置文件了)

方式一:

修改 /etc/sysconfig/docker文件

vi /etc/sysconfig/docker

在最下面添加一行:

DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'

再修改 /usr/systemd/system/docker.service

vi /usr/systemd/system/docker.service

在ExecStart后面添加 $DOCKER_OPTS \

 

重新加载配置文件 systemctl daemon-reload

重启docker systemctl restart docker

最后是防火墙了。

参考:

https://blog.csdn.net/qq_39623859/article/details/80072545

方式二:

想在windows中操作远程linux中的docker,那前提是必须

开启docker远程API,修改docker配置文件#vi /usr/lib/systemd/system/docker.service   ,进入编辑模式后,将ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,改完后如下所示

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock  ,这里就写4个0,你可别改成自己的ip哦,保存后退出,重新加载配置文件#systemctl daemon-reload   ,启动docker #systemctl start docker  ,

输入#netstat -anp|grep 2375 显示docker正在监听2375端口,输入#curl 127.0.0.1:2375/info  显示一大堆信息,证明远程api就弄好了

参考:https://blog.csdn.net/qq_34930488/article/details/80009197

 

4、打包、上传镜像

mvn install

mvn docker:build

加餐:maven docker 插件绑定 phase

参考:https://www.jianshu.com/p/683423f1ed3c

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值