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 \

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM