• intelliJ IDEA docker部署springboot项目


    一、docker服务器侧监听配置

    centos7安装配置docker参考《centos下docker安装

    vim /usr/lib/systemd/system/docker.service,配置完端口,下面的idea中才能连接成功。
     默认使用2375端口监听,如果开有防火墙,需要把端口添加到例外。
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
    

    二、插件安装和配置

     

    配置docker连接,一定要显示Connection succcessful:

    三、springboot项目,增加docker插件和Dockerfile配置

    1. 依赖包和配置
    <build>
            <plugins>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version> 1.2.1</version>
                    <executions>
                        <execution>
                            <id>build-image</id>
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <imageName>${project.artifactId}</imageName>
                        <imageTags>
                            <imageTag>latest</imageTag>
                        </imageTags>
                        <dockerDirectory>${project.basedir}</dockerDirectory>
                        <dockerHost>http://10.245.202.222:2375</dockerHost>
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
                                <include>${project.build.finalName}</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    我一开始建了一个docker的文件夹,将dockerfile放到那里,实践证明不行,不允许往上层路径寻找jar包。

    2. Dockerfile配置

    #指定基础镜像,在其上进行定制
    FROM java:8
    
    #维护者信息
    MAINTAINER zhouyu <zhouyu629@qq.com>
    
    #这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层。
    VOLUME /tmp
    
    #复制上下文目录下的target/demo-1.0.0.jar 到容器里
    COPY target/freemarker-page-demo-1.0-SNAPSHOT.jar demo-1.0.0.jar
    
    #bash方式执行,使demo-1.0.0.jar可访问
    #RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
    RUN bash -c "touch /demo-1.0.0.jar"
    
    #声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
    EXPOSE 8080
    
    #指定容器启动程序及参数   <ENTRYPOINT> "<CMD>"
    ENTRYPOINT ["java","-jar","demo-1.0.0.jar"]

    执行mvn package成功

     3. 创建容器

     

    注意bind ports,我这里是8080:8088,前面是服务器向外暴露的端口号,8088则是application.yml里配置的应用端口号,我这里对应的tomcat端口号。

    四、主要问题解决 

    1.xxxx-1.0-SNAPSHOT.jar中没有主清单属性 ,造成发布失败。

    主要是因为springboot没有配置maven package插件,pom中新增plugin

    <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

    2. 容器时间和宿主时间不一致

    在Dockerfile最后一行增加:

    #设置时区
    RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
      && echo 'Asia/Shanghai' >/etc/timezone 
  • 相关阅读:
    数据库存储过程分页
    C#.net随机数函数
    文件下载文件名兼容中英文空格
    win7安装SQL2005出现29506错误
    SQL2008清空日志文件
    C#数字类型输出字符串时保留指定小数位数的方法
    对.NET中导出数据到EXCEL的几种方法探讨
    六种删除数据库重复行的方法 .
    修改表联合主键
    增加联合主键
  • 原文地址:https://www.cnblogs.com/zhouyu629/p/12460690.html
Copyright © 2020-2023  润新知