前章回顾

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

构建spring-boot项目

安装插件docker intergration

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

image

在阿里云上开通镜像服务

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

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

image

springboot的yml文件配置

server:
  port: @server.port@

spring:
  application:
    name: @artifactId@

在maven的setting文件中,添加如下配置

<server>
    <!--maven的pom中可以根据这个id找到这个server节点的配置-->  
    <id>docker-aliyun</id>
    <!--这里是在阿里云注册的账号-->
    <username>12345678@qq.com</username>
    <!--这里是在阿里云注册的密码-->
    <password>abcdef</password>
    <configuration>
       <!--这是在阿里云注册时填写的邮箱-->
       <email>12345678@qq.com</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

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

image

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

image

  • 启动

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

Logo

更多推荐