windows SpringBoot JAR包 打docker镜像到远程镜像仓库
一、pom.xml
在需要打包的项目pom.xml文件中加入
<properties>
<docker.image.prefix>远程镜像仓库地址</docker.image.prefix>
<dockerfile-maven-plugin.version>1.4.12</dockerfile-maven-plugin.version>
</properties>
远程镜像仓库地址一般由:远程镜像仓库地址+空间组成,以自己的路径为准
加入maven插件“dockerfile-maven-plugin”
<build>
<plugins>
<!-- docker打包插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile-maven-plugin.version}</version>
<configuration>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<tag>${project.version}-${profile.active}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
其中:我们把${project.artifactId}
作为镜像名称,你也可以定义为其它
${project.version}+${profile.active}
作为镜像的tag,也就是版本号
JAR_FILE
:我们mvn package 已经打包好的项目jar文件路径
二、Dockerfile配置
FROM openjdk:8-jre
#维护者信息
MAINTAINER 姓名 邮箱
#设置容器时间时区
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
ARG JAR_FILE
COPY ${JAR_FILE} /app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
CMD ["--spring.profiles.active=docker"]
三、安装docker
在本地虚拟机或者远程的云服务器安装docker
#配置docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新Yum安装的相关Docke软件包&安装Docker CE
yum update -y && yum install docker-ce
#设置docker daemon文件
#创建/etc/docker目录
mkdir /etc/docker
#更新daemon.json文件
cat > /etc/docker/daemon.json <<EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"registry-mirrors": ["https://mirror.ccs.tencentyun.com/"]}
EOF
#创建,存储docker配置文件
mkdir -p /etc/systemd/system/docker.service.d
#重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
#验证安装
docker version
输出版本信息,安装成功!
#开启docker远程API
想在windows中操作远程linux中的docker,必须开启docker远程API
修改docker配置文件:
vi /usr/lib/systemd/system/docker.service
找到ExecStart,在后面加上(注意-H之间有空格):
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
保存退出!
#重加载配置文件和重启docker
systemctl daemon-reload && systemctl restart docker
#验证是否开启docker远程API
netstat -anp|grep 2375
显示docker正在监听2375端口,
输入:
curl 127.0.0.1:2375/info
打印一堆JSON字符串,说明docker远程API开启成功啦
#iptables放行2375端口(不然外网访问不到)
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 2375 -j ACCEPT
四、windown配置docker变量
#在windows系统环境变量配置
名称:DOCKER_HOST
值:tcp://http://${IP}:2375
${IP}改为你的远程docker主机IP
#配置settings.xml
找到你windown maven的配置文件settings.xml(查看你idea或者eclipse的maven配置就可以看到,或者目录搜索.m2,一般在这个目录下),加入:
<servers>
<server>
<id>你的镜像仓库地址</id>
<username>镜像仓库登录账户</username>
<password>镜像仓库登录密码</password>
</server>
</servers>
配置完毕,最好重启一下编辑器(IDEA||eclipse)
五、打包&制作镜像&push镜像到远程仓库
mvn clean package -P test
mvn dockerfile:build dockerfile:push
IDEA也可以在:Maven projects–>lifecycle->package 打包JAR
制作镜像和推送:Maven projects–>Plugins->Dockerfile->dockerfile:build&dockerfile:push