Docker学习笔记之---SpringBoot集成Docker最详细能跑通的demo

3 篇文章 0 订阅
1 篇文章 0 订阅

编写目的

        最近在学习Docker 自动化打包、部署、发布,在网上看了很多千篇一律粗制滥造的文章,在走了很多弯路的同时也很气愤,写这篇文章目的有二,其一,是把完整的、正确的思路整理出来希望能够帮助同样在学习Docker的同学,其二,是记录学习过程给自己留一个备份。本篇内容仍然是以实践为主,不过多论述理论知识。

实现目标

使用IDEA把SpringBoot项目打包为镜像自动发布到Docker服务器。

思路步骤

        分析实现目标其中有三个重要参与者,分别是IDEA、SpringBoot和Docker服务端,下面逐一说明配置内容。

1. Docker服务端配置

        Docker安装后默认是不开放网络访问功能的,要想通过网络远程访问和传输数据就必须开放Docker服务端2375端口,使开发机能够远程连接到服务端。

1.1. 配置

  编辑docker.service文件

vi /etc/systemd/system/docker.service 

  找到ExecStart=关键字将其修改为如下内容 

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

 重启Docker使配置生效

# 重载unit配置文件
systemctl daemon-reload 

# 启动Docker                    
systemctl start docker                      

1.2. 测试

(1)使用 netstat -ntpl 查看监听端口

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      878/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      993/master          
tcp6       0      0 :::8080                 :::*                    LISTEN      1538/docker-proxy   
tcp6       0      0 :::22                   :::*                    LISTEN      878/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      993/master          
tcp6       0      0 :::2375                 :::*                    LISTEN      875/dockerd  

(2)访问 http://192.168.248.129:2375/version

 2. IDEA配置

        在IDEA中通过配置Docker插件可以远程操控Docker服务端创建、启停容器等操作,高版本IDEA自带Docker插件。

2.1. 配置

 2.2. 测试

 3. SpringBoot配置

springBoot是借助docker-maven-plugin插件实现集成Docker并自动打包镜像和发布镜像的。

 3.1 配置

  (1)配置dockefile文件

 在工程src/main/下创建docker文件夹,并将dockefile文件拷贝到此目录下。

# 基础镜像:FROM命令: 基础镜像名:tag,例如:java:8
FROM macaw204/jre8:1.0

# 维护者: 格式:MAINTAINER <name>
MAINTAINER microapps

# 下面RUN执行时的目录
WORKDIR /app

# 镜像的操作指令
# 拷贝一个文件到容器,格式:<src> <dest>
ADD docker-1.0.jar /app/app.jar

# 告诉docker容器暴露端口,在容器启动的时需要通过 -p做端口映射
EXPOSE 8080

# 配置容器启动后,执行的命令
ENTRYPOINT ["java","-jar","/app/app.jar"]

(2)配置pom.xml

  在pom.xml文件中配置 docker-maven-plugin插件

    ......
    <properties>
        <java.version>1.8</java.version>
        <docker.image.prefix>css</docker.image.prefix>
    </properties>
    ......
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--Maven docker 生成镜像插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <!--指定远程 docker api地址-->
                    <dockerHost>http://192.168.248.129:2375</dockerHost>
                    <!--镜像名:前缀[可选]/名称-->
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!-- 指向dockerFile文件-->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!-- 打包路径-->
                            <directory>${project.build.directory}</directory>
                            <!-- jar包名称-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

 3.2 测试

(1)创建程序

  复用启动类在其中加入http请求访问方法

package css.com.cn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;

@RestController
@SpringBootApplication
public class DockerApplication {

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

	@GetMapping("/")
	public String xq02Init(HttpServletResponse response){
		return "hello docker";
	}

}

(2)打jar包

(2)创建镜像并发布

 发布前查看Docker服务端镜像

[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
macaw204/jre8           1.0                 b8c82c0eadfd        2 days ago          174MB
alpine                  latest              a24bb4013296        4 months ago        5.57MB

打包镜像 

 

 发布后查看Docker服务端镜像

[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
css/docker              latest              c0252ffc0c09        2 minutes ago       191MB
macaw204/jre8           1.0                 b8c82c0eadfd        2 days ago          174MB
alpine                  latest              a24bb4013296        4 months ago        5.57MB

通过IDEA创建容器

右键创建容器 

通过浏览器访问

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值