一. 背景
废话少说,容器化部署应用现在已经是很普遍了,springboot也使用的普遍,那么,如何快速将一个springboot项目打包成一个docker镜像呢?还有一个问题就是,对于研发和测试来说 自己的电脑上基本上不会安装Windows版本的docker,那么怎样实现在本地输入一个命令后就直接将代码打包成一个镜像呢?本文讲述了如何实现在本地简单配置maven后利用远程Linux服务器将springboot应用打包成docker镜像并推送到镜像仓库
二. docker安装及配置
1. docker安装
docker如何安装在这里就不多说了 有问题的话可以看看这篇文章
2.开启2375端口,提供外部访问docker
编辑docker文件:/usr/lib/systemd/system/docker.service,命令如下
vi /usr/lib/systemd/system/docker.service
修改ExecStart行,增加内容 -H tcp://0.0.0.0:2375 ,修改后如下:
重新加载docker配置
systemctl daemon-reload
systemctl restart docker
配置完成后 浏览器访问 http://192.168.30.108:2375/version
注:192.168.30.108为远程服务器的ip
如果界面显示了docker的版本信息 则表示配置成功
三. dockerfile编写
lz是这样写的 仅供参考
FROM java
LABEL MAINTANIER="xyl <905756539@qq.com>"
ENV WORKDIR=/usr/local/share/goalgo/team-server
WORKDIR ${WORKDIR}
ADD *.jar ${WORKDIR}/
VOLUME ${WORKDIR}/logs
EXPOSE 80
CMD ["java","-Xms256m","-Xmx2048m","-Djava.security.egd=file:/dev/urandom","-jar","team-server-1.0-SNAPSHOT.jar","--server.port=80"]
dockerfile各个参数意思如下:
四.pom文件配置镜像仓库等信息
注:一下pom文件配置是不全的 主要将maven-docker插件的配置给出来了
<properties>
<!--docker镜像仓库的路径-->
<docker.repository.url>reg.our51.com</docker.repository.url>
<!---镜像仓库的命名空间即 项目名-->
<docker.repository.namespace>goalgo</docker.repository.namespace>
<!--对应maven setting.xml中的配置 请看本文标题五-->
<docker.repository.serverId>docker-goalgo</docker.repository.serverId>
<!--编译docker镜像的主机-->
<docker.host>http://192.168.30.108:2375</docker.host>
</properties>
<dependencies>
...
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<forceTags>true</forceTags>
<pushImage>true</pushImage>
<imageName>
${docker.repository.url}/${docker.repository.namespace}/${project.artifactId}:${version}
</imageName>
<serverId>${docker.repository.serverId}</serverId>
<registryUrl>${docker.repository.url}</registryUrl>
<dockerDirectory>src/main</dockerDirectory>
<dockerHost>${docker.host}</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
五.maven配置
找到maven安装目录中的配置文件 修改setting.xml 配置server
六.执行打包
进入springboot项目目录下 执行以下命令 进行打包
mvn clean package -Dmaven.test.skip=true -Dversion=lz070501 docker:build
注:-Dversion=lz070501 是指镜像的版本号为lz070501 如果远程服务器上没有jdk的镜像 第一次打包会很慢 耐心等待即可
执行成功后 在docker服务器和镜像仓库上会看到docker这个docker镜像
到此docker镜像就制作完成啦,感谢您的阅读,如有疑问请留言。