背景

由于我本地在windows上开发一个spring boot项目,需要使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器,所以远程linux服务器上的docker必须开启docker api服务。

具体步骤

  • 编辑docker宿主机文件/lib/systemd/system/docker.service
    sudo vi /lib/systemd/system/docker.service
  • 修改以ExecStart为开头的行
  • ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
  • 保存修改后的文件
  • 通知docker服务做出的修改
    systemctl daemon-reload
  • 重启docker服务
    sudo service docker restart
  • 测试可以连接到docker api
    curl http://localhost:2375/version
  • 在windows机器上配置环境变量,DOCKER_HOST=tcp://192.168.40.32:2375(docker宿主机的ip地址)
  • eclipse中maven项目的pom.xml文件内容:
  • <modelVersion>4.0.0</modelVersion>

        <groupId>com.bolingcavalry</groupId>
        <artifactId>k8stomcatdemo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>

        <name>k8stomcatdemo</name>
        <description>Demo project for Spring Boot</description>

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.9.RELEASE</version>
            <relativePath />
        </parent>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>

                <!--新增的docker maven插件 -->
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.4.12</version>
                    <!--docker镜像相关的配置信息 -->
                    <configuration>
                        <!--镜像名,这里用工程名 -->
                        <imageName>zsj/${project.artifactId}</imageName>
                        <!-- 您可以强制docker覆盖每个新构建的图像标记: -->
                        <forceTags>true</forceTags>
                        <!--TAG,这里用工程版本号 -->
                        <imageTags>
                            <imageTag>${project.version}</imageTag>
                        </imageTags>
                        <!--镜像的FROM,使用java官方镜像 -->
                        <baseImage>java:8u111-jdk</baseImage>
                        <!--该镜像的容器启动后,直接运行spring boot工程 -->
                        <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                        <!--构建镜像的配置信息 -->
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
            </plugins>
        </build>

  •  在eclipse中选择maven,Run Configurations,配置如下信息,然后点击RUN按钮。
  • 上一步骤进行完之后,需要耐心等待,过程比较缓慢。

以上步骤都完成之后,在docker服务器上运行docker images,就可以看到本项目编译之后的镜像。

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐