码迷,mamicode.com
首页 > 编程语言 > 详细

使用Docker部署SpringBoot项目

时间:2020-09-03 17:03:13      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:名称   ide   压缩   git   spring   这一   一个   work   jdk8   

环境 | 步骤

  • 使用的虚拟机安装Ubuntu20.04,Ubuntu里面安装了docker,还需要安装JDK和Maven
  • 在Win10上的Idea写好一个SpringBoot的Demo项目打包后传到Ubuntu中
  • 先用mvn package打包项目并运行 测试项目是否能成功跑起来
  • 最后用mvn package docker:build 打成Docker镜像
  • 注意事项(看了其他的博客,然后打镜像的时候报各种异常):
    • 项目名也就是artifactId最好也是小写
    • docker镜像名最好要小写

新建一个SpringBoot项目

pom.xml

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

    <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>

    <!-- 添加docker镜像名称(注意:docker镜像名最好要小写)-->
    <properties>
        <docker.image.prefix>dockerdemoservice</docker.image.prefix>
    </properties>

    <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>1.0.0</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>
            <!-- Docker maven plugin -->
        </plugins>
    </build>

启动类

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

Controller

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

在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 /home/lanceli/code/dockerdemoservice # dockerdemoservice 是我的demo项目
    ls # 可以看到src pom.xml 就是在这一级目录使用mvn打包
    mvn package # 先打成jar包,然后会生成一个target目录
    cd target
    java -jar dockerdemoservice-1.0-SNAPSHOT.jar # 可以看到spring boot的Log,然后请求controller 如果成功说明没问题
    cd /home/lanceli/code/dockerdemoservice # 回到项目的目录中
    mvn package docker:build # 打成docker镜像,看到BUILD SUCCESS后说明成功
    
  • 查看镜像并运行

    sudo docker images # openjdk之前是没有的,自动pull下来的
    REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
    dockerdemoservice/dockerdemoservice   latest              ea60d12b0337        24 minutes ago      121MB
    jenkins/jenkins                       lts                 697d76eba014        8 days ago          677MB
    nginx                                 latest              4bb46517cac3        11 days ago         133MB
    portainer/portainer                   latest              62771b0b9b09        4 weeks ago         79.1MB
    openjdk                               8-jdk-alpine        a3562aa0b991        15 months ago       105MB
    
    sudo docker run -d -p 8080:8080 dockerdemoservice/dockerdemoservice # 运行刚刚打好的镜像
    
  • 测试访问

使用Docker部署SpringBoot项目

标签:名称   ide   压缩   git   spring   这一   一个   work   jdk8   

原文地址:https://www.cnblogs.com/winter-shadow/p/13562598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!