intelliJ IDEA docker部署springboot项目

一、docker服务器侧监听配置

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

vim /usr/lib/systemd/system/docker.service,配置完端口,下面的idea中才能连接成功。
 默认使用2375端口监听,如果开有防火墙,需要把端口添加到例外。
1
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 \

 

posted on   zhouyu  阅读(4192)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示