将自己的SpringBoot应用打包发布到Linux下Docker中

将自己的SpringBoot应用打包发布到Linux下Docker中

1. 环境介绍

  • Java开发环境:Windows10 64位

maven3.6

jdk1.8

IDEA2018.3

  • 服务器:Linux Centos7 64位
  • Docker版本:Docker version 1.13.1, build b2f74b2/1.13.1

2. 开始前的准备

2.1 开启docker远程连接

  1. 搞定防火墙先

    这里是将centos的防火墙关闭了,只是为了方便演示,如果要保障安全,可以在部署完后打开防火墙,并开启特定端口:

    以80端口为例
    添加
    firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
    重新载入
    firewall-cmd --reload
    查看
    firewall-cmd --zone= public --query-port=80/tcp
    删除
    firewall-cmd --zone= public --remove-port=80/tcp --permanent

    关闭防火墙
    systemctl stop firewalld
    开机禁用防火墙
    systemctl disable firewalld
  2. 开放docker远程访问

    我在树莓派上这样配置并不行,暂时没找到解决方案

    vi命令编辑docker启动:
    vi /usr/lib/systemd/system/docker.service
    在ExecStart处追加参数
    -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock \
      有些朋友可能需要追加这个参数(将上面那句话改成下面这句话):
      /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

    我的配置修改后是这样子的:

    注意这只是我截取的一小块,并不是全部,更不要把我的文件复制过去

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
  1. 重启docker服务

    systemctl daemon-reload 
    systemctl restart docker
  2. 验证是否可以访问

    如果返回一个json字符串表示可以正常访问,不成功会报错
    [root@bogon ~]# curl http://localhost:2375/info
    {"ID":"SXMD:MGRC:RVMF:ZTRM:2QBG:RUG6:RG7Y:YARM:TL5I:GM....................
  3. 也可以在windows下通过浏览器访问IP+端口号

    如果curl可以访问但是windows无法访问,检查一下防火墙关了没有

1486077-20190329173527708-573182660.png

2.2 新建SpringBoot项目

  1. 如图所示

1486077-20190329173554948-1602625574.png

  1. 这里只用了一个web插件

    1486077-20190329173609976-679443401.png

  2. 项目路径为E:\IdeaProjects\Tea\docker-abc

    1486077-20190329173618462-1664388442.png

  3. 新建kim.nzxy.dockerabc.controller.DemoController

    package kim.nzxy.dockerabc.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Author: Xiaoyan
     * @Date: 2019/3/29 16:08
     */
    @RestController
    public class DemoController {
        @RequestMapping("/")
        public String abc() {
            return "abc";
        }
    }
  4. SpringBoot运行结果如下:

    1486077-20190329173635446-618008845.png

3. 开始构建我们的Springboot应用

3.1 在pom.xml中添加Maven插件

第一个是用来创建docker容器用的

第二个如果不加上的话无法运行jar包

<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.2.0</version>
        <configuration>
            <!-- 配置docker server 位置,否则默认127.0.0.1 -->
            <dockerHost>http://192.168.0.169:2375</dockerHost>
            <!-- imageName冒号前面为容器名,后面是容器版本号 -->
            <imageName>${project.artifactId}:${project.version}</imageName>
            <!-- Dockerfile 文件位置 -->
            <dockerDirectory>${project.basedir}</dockerDirectory>
            <resources>
                <resource>
                    <targetPath>/</targetPath>
                    <directory>${project.build.directory}</directory>
                    <include>${project.build.finalName}.jar</include>
                </resource>
            </resources>
        </configuration>
    </plugin>
</plugins>

3.2 新建Dockerfile文件

位置:

1486077-20190329173659536-564733706.png

内容:(这里与图不符,图中少了个‘’-‘’)

FROM openjdk:8
VOLUME /tmp
# docker-abc-0.0.1-SNAPSHOT.jar为maven项目project.artifactId-project.version
ADD docker-abc-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8761
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

如果新建的没错的话,IDEA是可以识别的

3.3 配置运行方式

1486077-20190329173721902-1053869114.png

4. 构建-运行

4.1 构建

这里就不文字解释了,点击运行等它完成就行了

1486077-20190329173735538-686612627.png1486077-20190329173748301-733868386.png

4.2 运行我们的项目

以上如果报错了请检查步骤是否正确,或者Maven配置是否有问题

现在转移阵地到Centos上:

  1. 查看是否生成成功

    呐,我们构建的就是那个叫docker-abc的东西啦

    如果成功这里将会生成一个
    [root@bogon ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker-abc          0.0.1-SNAPSHOT      44eb924f47a2        7 minutes ago       659 MB
    docker.io/openjdk   8                   b8d3f94869bb        33 hours ago        625 MB
  2. 启动自己的项目

    运行成功
    [root@bogon ~]# docker run -d -p 8080:8080 44eb924f47a2
    30317d2daaf2a76e9fc4cb9bf08a102ecd84db34f790f73d8e8cebb0c4bcfd0c
  3. 测试成果:

    1486077-20190329173808421-1844090234.png

posted on 2019-03-29 17:39 凉云 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liangyun/p/10622805.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值