专栏名称: 武哥聊编程
这里有技术,有段子,有生活,也有资源,要不然怎么叫 “私房菜” 呢?
目录
相关文章推荐
成都发布  ·  早安,成都!新闻来了 ·  昨天  
成都日报  ·  95.10亿!刷新双记录!成都全国第三 ·  2 天前  
成都日报  ·  95.10亿!刷新双记录!成都全国第三 ·  2 天前  
清廉蓉城  ·  UP中国丨每一束光芒都熠熠生辉 ·  4 天前  
清廉蓉城  ·  UP 中国丨挺膺担当再出发 ·  3 天前  
成都本地宝  ·  成都寒假必去的10个免费遛娃场馆!地铁直达→ ·  6 天前  
51好读  ›  专栏  ›  武哥聊编程

使用Docker部署SpringBoot项目

武哥聊编程  · 公众号  ·  · 2020-10-29 08:50

正文

作者 | LanceLi

来源 |  urlify.cn/eQvaea

66套java从入门到精通实战课程分享

一、环境 | 步骤

  • 使用的虚拟机安装Ubuntu20.04,Ubuntu里面安装了docker,还需要安装JDK和Maven

  • 在Win10上的Idea写好一个SpringBoot的Demo项目打包后传到Ubuntu中

  • 先用mvn package打包项目并运行 测试项目是否能成功跑起来

  • 最后用mvn package docker:build 打成Docker镜像

  • 注意事项(看了其他的博客,然后打镜像的时候报各种异常):

    • 项目名也就是artifactId最好也是小写

    • docker镜像名最好要小写


二、新建一个SpringBoot项目

2.1pom.xml

<parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.4.RELEASEversion>
    parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

    
    <properties>
        <docker.image.prefix>dockerdemoservicedocker.image.prefix>
    properties>

    <build >
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
            
            <plugin>
                <groupId>com.spotifygroupId>
                <artifactId>docker-maven-pluginartifactId>
                <version>1.0.0version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}imageName>
                    <dockerDirectory>src/main/dockerdockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/targetPath>
                            <directory>${project.build.directory}directory>
                            <include>${project.build.finalName}.jarinclude>
                        resource>
                    resources>
                configuration>
            plugin>
            
        plugins>
    build>

2.2启动类

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

2.3Controller

@RestController
public class DockerController {
    @GetMapping("/docker")
    public String getString() {
        return "dockerDemo is run";
    }
}

2.4在src/main下新建一个docker的目录


也就是src/main/docker。注意是目录不是package

  • 在src/main/docker下新建一个Dockerfile的文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD dockerdemoservice-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • 这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中:

    • FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载

    • VOLUME ,VOLUME 指向了一个 /tmp 的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用 /tmp 作为工作目录。这个命令的效果是:在宿主机的 /var/lib/docker 目录下创建一个临时文件并把它链接到容器中的 /tmp 目录

    • ADD ,拷贝文件并且重命名

    • ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为 ENTRYPOINT

  • 在本地运行没问题,然后传到Ubuntu里解压

三、打docker镜像


  • 项目打压缩包放到Ubuntu里

    正常的应该是用git或svn拉代码,这里为了方便直接copy到服务器里

cd






请到「今天看啥」查看全文