欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用sprinboot打包成docker镜像并且推送到阿里云服务

程序员文章站 2022-06-05 17:29:41
...

前章回顾

上一章节中,我们简单提到了在Linux上安装Docker,讲解了简单的Docker的一些命令。而Docker的强大之处就是,可以通过镜像来下载运行项目,而镜像又可以上传到仓库中,提供给其他服务器使用。因此在这章节中,我们就讲解如何把springboot项目打包成镜像,并且如何运行。

构建spring-boot项目

安装插件docker intergration

通过该插件可以很好得显示docker文件

使用sprinboot打包成docker镜像并且推送到阿里云服务

在阿里云上开通镜像服务

开通地址: https://cr.console.aliyun.com

然后创建一个镜像仓库,在基本信息中,可以看到镜像仓库的地址。

使用sprinboot打包成docker镜像并且推送到阿里云服务

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

  • 在阿里云镜像服务可以看到

使用sprinboot打包成docker镜像并且推送到阿里云服务

  • 在服务器上可以看到自己刚刚打上去的版本

使用sprinboot打包成docker镜像并且推送到阿里云服务

  • 启动

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