使用Docker部署SpringBoot项目

原创
2020/12/15 01:57
阅读数 105

使用Docker部署SpringBoot项目。

 

一、创建测试接口

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

@RestController
@RequestMapping("/docker")
public class DockerController {
    
    @GetMapping("/hello")
    public String sayHello(){
        return "hello docker!";
    }
    
}

 

二、创建Dockerfile文件生成镜像

文件地址在:src/main/docker/Dockerfile

Dockerfile脚本内容如下:

FROM java:8
VOLUME /tmp
ADD test.jar app.jar
EXPOSE 8080
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:表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载。
  • VOLUME:VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录。
  • ADD:拷贝文件并且重命名。
  • EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员告诉容器布署人员容器应该映射哪个端口给外界。
  • ENV JAVA_OPTS:配置Java环境变量。
  • ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar。为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT。

 

三、添加Maven插件

<properties>
    <docker.image.prefix>piao</docker.image.prefix>
</properties>
	
<build>
    <finalName>${name}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker镜像打包 -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.11</version>
            <configuration>
                <!-- ${docker.image.prefix} docker官方仓库的用户名,如果你不需要上传镜像,随便填 -->
                <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>

${docker.image.prefix} 为你在 docker官方仓库的用户名,如果你不需要上传镜像,随便填。

 

四、打包SpringBoot镜像

首先,我们需要启动Docker服务。然后输入mvn打包命令,执行Docker编译插件。

mvn clean
mvn package docker:bulid

镜像生成成功。我们输入docker images查看镜像:

 

五、运行项目镜像,访问结果

docker run -p 8080:8080 -t piao/test

现在我们已经运行镜像,启动了SpringBoot服务。

访问测试接口:http://127.0.0.1:8080/docker/hello

最后,我们看到接口访问成功了!

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部