使用sprinboot打包成docker镜像并且推送到阿里云服务
程序员文章站
2022-06-05 17:29:41
...
前章回顾
上一章节中,我们简单提到了在Linux上安装Docker,讲解了简单的Docker的一些命令。而Docker的强大之处就是,可以通过镜像来下载运行项目,而镜像又可以上传到仓库中,提供给其他服务器使用。因此在这章节中,我们就讲解如何把springboot项目打包成镜像,并且如何运行。
构建spring-boot项目
安装插件docker intergration
通过该插件可以很好得显示docker文件
在阿里云上开通镜像服务
开通地址: https://cr.console.aliyun.com
然后创建一个镜像仓库,在基本信息中,可以看到镜像仓库的地址。
springboot的yml文件配置
server:
port: @[email protected]
spring:
application:
name: @[email protected]
在maven的setting文件中,添加如下配置
<server>
<!--maven的pom中可以根据这个id找到这个server节点的配置-->
<id>docker-aliyun</id>
<!--这里是在阿里云注册的账号-->
<username>[email protected]</username>
<!--这里是在阿里云注册的密码-->
<password>abcdef</password>
<configuration>
<!--这是在阿里云注册时填写的邮箱-->
<email>[email protected]</email>
</configuration>
</server>
pom文件
具体的源码大家可以从码云上下载。我这里只是大概列举一下。
- 在pom文件中,添加几个属性
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!-- 监听端口 -->
<server.port>7000</server.port>
<!-- 镜像名称-->
<docker.repostory>xxxx</docker.repostory>
<docker.registry.name>xxx</docker.registry.name>
</properties>
其中,docker.repostory表示仓库地址,docker.registry.name表示仓库名称。可以通过阿里云镜像查看。
配置docker插件
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--镜像名称--> <imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<!--指定推送的镜像-->
<dockerHost>http://ip:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--推送阿里云相关-->
<serverId>docker-aliyun</serverId>
<!--表示阿里云的docker仓库地址。阿里云的容器镜像服务地址-->
<registryUrl>${docker.repostory}</registryUrl>
<!--表示推送镜像到仓库。-->
<pushImage>true</pushImage>
</configuration>
</plugin>
编写DockerFile文件
FROM openjdk:8-jre
VOLUME /tmp
ADD springboot-docker-1.0.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
注意:ADD 后面请按照实际情况填写自己 package 生成的 jar 文件名称。
推送
-
命令
mvn clean package docker:build -DpushImage -
在阿里云镜像服务可以看到
- 在服务器上可以看到自己刚刚打上去的版本
- 启动
docker run -d -p 7000:7000 registry.cn-shenzhen.aliyuncs.com/xxx/xxx:1.0.0
- 查看运行情况和运行日志
docker ps
docker logs -f 容器ID
- 访问
ip:7000/test
上一篇: C#的冒泡排序