美文网首页
在Mac上用docker部署springboot项目

在Mac上用docker部署springboot项目

作者: 小明今晚加班 | 来源:发表于2019-07-30 22:47 被阅读0次

docker安装

首先下载docker , Mac版本:

直接双击下载的docker包,安装完成后打开terminal,输入:

docker --version

如果出现:


image.png

证明docker安装成功!

新建springboot项目

新建springboot的方式有三种,可以参考使用eclipse构建springboot项目,列出项目主要代码:

package com.ibm;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootdemoApplication.class, args);
    }
}
package com.ibm.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloDockerController {

    @RequestMapping(value="")
    public String helloDocker() {
        return "hello, Docker!";
    }
}

修改application.properties文件,修改tomcat默认端口为8081,


屏幕快照 2019-07-30 下午10.08.42.png

启动springboot项目,在浏览器输入:localhost:8081 ,如果能出现:


image.png

证明项目构建没有问题!

pom.xml配置maven和docker相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cczhao</groupId>
    <artifactId>springbootdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootdemo</name>
    <description>Demo project for Spring Boot</description>
  
    <!-- properties中添加docker镜像支持-->
    <properties>
        <java.version>1.8</java.version>
        <docker.image.prefix>springboot</docker.image.prefix>
    </properties>

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

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

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

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

            <!-- Docker maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

springboot项目写Dockerfile

新建src/main/docker文件夹,


image.png

并在文件夹内创建Dockerfile文件,文件内容如下:

FROM java:8
EXPOSE 8081
VOLUME /tmp
ADD springbootdemo-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  • FROM 表示要构建的镜像基于哪个镜像,java:8表示使用jdk8环境为基础镜像
  • EXPOSE 告诉Docker这个容器在运行时会监听哪些端口。
  • VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
  • ADD 表示把文件拷入docker ,并改名成 app.jar
  • ENTRYPOINT 表示使用指定命令在镜像运行时执行,启动jar。
    注:这里让docker监听8081端口,没有按照Tomcat默认的8080端口来启动,所以在springboot项目中需要修改tomcat端口为8081.

maven打包项目,并测试打包结果

  1. 打开terminal,并进入项目目录,


    image.png
  2. 打包
mvn package

成功后,如下图:


image.png
  1. 启动项目
java    -jar   target/springbootdemo-0.0.1-SNAPSHOT.jar

项目启动成功后,如下图:


image.png
  1. 我们可以在浏览器中查看:localhost:8080 ,可以看到:


    image.png

    到此为止,表明我们的jar包打的没有问题!

构建docker镜像并启动

  1. 构建docker镜像,
mvn package docker:build

如果出现下图所示内容,证明镜像构建成功,


image.png
  1. 启动镜像
    查看构建的镜像内容,
docker images
image.png

最后启动镜像,外部通过访问8080端口来访问,

docker run -p 8888:8080 -t springboot/springbootdemo

可查看当前所有启动的container信息:

docker container ls -a
image.png

证明container已经启动成功!可从localhost:8888端口去访问!

相关文章

网友评论

      本文标题:在Mac上用docker部署springboot项目

      本文链接:https://www.haomeiwen.com/subject/vwforctx.html