文档章节

docker部署springboot项目

yimingkeji
 yimingkeji
发布于 11/17 01:49
字数 685
阅读 25
收藏 10

安装docker

菜鸟教程

springboot项目

maven依赖

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

    <groupId>boottest</groupId>
    <artifactId>com.ityang.boot</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>boottest</name>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.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>

    <properties>
        <java.version>1.8</java.version>
    </properties>


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

启动和rest服务类

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

    @RequestMapping("/")
    public String index() {
        return "hello spring boot";
    }
}

启动项目,浏览器访问 localhost:8080

编写Dockerfile

在项目 /src/main目录下新建目录docker,在/src/main/docker下新建文件 Dockerfile,内容为:

# 基础镜像 这里使用国内网易镜像
FROM hub.c.163.com/dwyane/openjdk:8
#挂载宿主/tmp目录到容器的/tmp目录
VOLUME /tmp
# 拷贝文件(maven打包后的jar文件),并重命名为 app.jar
ADD com.ityang.boot-1.0-SNAPSHOT.jar app.jar
# 启动容器后执行一些命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

项目添加docker-maven-plugin插件

<!-- Docker maven plugin start -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
					<!--[a-z 0-9] 不然docker:build会报错-->
                    <imageName>dockerspringboot</imageName>
<dockerDirectory>${project.basedir}/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 end -->

需要注意的是,镜像名称必须为 a-z(小写)和0-9 的值,否则docker:build 报错

构建镜像文件

执行命令:

$ mvn clean package  docker:build

或者分开执行:

$ mvn clean package
$ mvn docker:build

部分控制台信息:

[INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ com.ityang.boot ---
[INFO] Copying /Users/yangzhenlong/projs/my/boot-test/target/com.ityang.boot-1.0-SNAPSHOT.jar -> /Users/yangzhenlong/projs/my/boot-test/target/docker/com.ityang.boot-1.0-SNAPSHOT.jar
[INFO] Copying /Users/yangzhenlong/projs/my/boot-test/src/main/docker/Dockerfile -> /Users/yangzhenlong/projs/my/boot-test/target/docker/Dockerfile
[INFO] Building image dockerspringboot
Step 1/4 : FROM hub.c.163.com/dwyane/openjdk:8

 ---> 96cddf5ae9f1
Step 2/4 : VOLUME /tmp

 ---> Running in 0dab3c046923
Removing intermediate container 0dab3c046923
 ---> 2e62fad6a16a
Step 3/4 : ADD com.ityang.boot-1.0-SNAPSHOT.jar app.jar

 ---> a966ed4c8748
Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 ---> Running in 4ec1c4990022
Removing intermediate container 4ec1c4990022
 ---> 02b677ad12e1
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 02b677ad12e1
Successfully tagged dockerspringboot:latest
[INFO] Built dockerspringboot
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.475 s
[INFO] Finished at: 2018-11-17T01:24:57+08:00
[INFO] ------------------------------------------------------------------------

通过docker镜像启动容器

查看镜像

$ docker images
REPOSITORYTAGIMAGE IDCREATEDSIZE
dockerspringbootlatest02b677ad12e18 seconds ago657MB

启动容器

$ docker run -p 8080:8080 -d dockerspringboot
cbc89f9e0cd584f1405d7177098423f5b576d668f7aee6ff7dfb5b4e34154862

解释:

-p 8080:8080 #容器端口映射到宿主端口,格式为:主机(宿主)端口:容器端口
-d #后台运行容器,并返回容器ID

查看运行的容器

$ docker ps
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
cbc89f9e0cd5dockerspringboot"java -Djava.securit…"58 seconds agoUp 58 seconds0.0.0.0:8001->8001/tcpfrosty_lichterman

浏览器访问 loalhost:8080

© 著作权归作者所有

共有 人打赏支持
yimingkeji
粉丝 4
博文 36
码字总数 23843
作品 0
杭州
私信 提问
springboot整合docker部署(两种构建Docker镜像方式)

在docker开始部署springBoot项目(方法一) Dockerfile 文件 1.在centos7 ~ 创建一个文件夹docker 里面放置 上面的Dockerfile 和 springBoot 打包的项目dockerspringboot.jar 在该docker文件下...

时刻在奔跑
12/05
0
0
docker(三):使用maven 插件构建docker镜像

---layout: blogistop: truetitle: "使用maven 插件构建docker镜像"date: 2018-09-11category: dockertags: docker --- 介绍 作为一个java后端开发人员,docker如何与Maven 工程相结合是我们...

开心的哈士奇
10/17
0
0
springboot docker jenkins 部署 对比 tomcat

---------------------------------------------------------------------------------------------------------------- springboot 详解 (一) helloworld 下载demo springboot 详解 (二)......

curiousby
06/26
0
0
基于Docker+Prometheus+Grafana监控SpringBoot健康信息

在微服务体系当中,监控是必不可少的。当系统环境超过指定的阀值以后,需要提醒指定的运维人员或开发人员进行有效的防范,从而降低系统宕机的风险。在CNCF云计算平台中,Prometheus+Grafana是...

融科聂晨
11/05
0
0
微服务资源springboot、springcloud、docker、dubbo项目实战等倾心分享

精彩内容 java实战练习项目教程 全网最全电子图书分享 你所需要的大数据视频教程 java学习视频教程及源码 今天又是周末,还是想给大家送一些福利,因为最近一直有小伙伴问我要springboot等微...

公众号_好好学java
08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
45分钟前
1
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
48分钟前
1
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
1
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
1
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部