zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    手把手教你创建ASP.NET MVC Dashboard应用
    DevExpress ASP.NET v20.2版本亮点放送:甘特图控件全面升级
    .NET 6已到来?Telerik WinForm率先支持
    手把手教你创建一个Vue Dashboard应用
    Kendo UI for jQuery数据管理使用教程:更改PivotGrid字段名称
    现代应用的启动屏幕如何更美观?这款第三方控件你使用了吗?
    VS插件CodeRush v20.2.8正式发布,支持新的代码模板
    这个三方控件,让你的ASP.NET应用图表界面更酷炫
    nginx负载均衡技术基础
    面向过程的代码请不要拆分成多个脚本
  • 原文地址:https://www.cnblogs.com/zhouyu629/p/12460690.html
Copyright © 2011-2022 走看看