Idea連接服務器docker並部署代碼到docker實現一鍵啟動


好記性不如爛筆頭,寫筆記是為了回頭看的。

誰要是不小心搜了看了,如有不足之處敬請諒解。

一、准備工作

虛擬機centos7.X,docker1.3.XWin10 Idea2018.1

默認Idea已經下載了Docker插件

默認虛擬機docker已經裝了jdk

二、開始

1. 打開docker配置文件(docker把端口號2375開放,下面兩種方法都不夠安全,但是測試用用還可以,正式的就不行。)

[root@huangsz ~]# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd-current 后面加上

-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

如下圖所示:

 

或者

修改一下內容:

 

[root@huangsz ~]# vim /etc/sysconfig/docker

2. 重新加載配置文件,重啟docker

systemctl daemon-reload

systemctl start docker

3. 查看進程

netstat -tulp

PS:Centos7沒有netstat,所以要先下載。

yum install net-tools

4. 防火牆開放2375端口號

[root@huangsz ~]# firewall-cmd --zone=public --add-port=2375/tcp --permanent

重啟防火牆

[root@huangsz ~]# firewall-cmd --reload

-------------------------- 分割線 割割割割割割割-----------------

Idea連接虛擬機docker

打開小扳手(setting)找到docker,輸入虛擬機ip,不出意外會連接成功的。

5. Springboot項目添加docker-maven-plugin插件

<!--使用docker-maven-plugin插件-->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>

    <!--將插件綁定在某個phase執行-->
    <executions>
        <execution>
            <id>build-image</id>
            <!--將插件綁定在package這個phase上。也就是說,用戶只需執行mvn package ,就會自動執行mvn docker:build-->
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <!--指定生成的鏡像名-->
        <imageName>hsz1992/${project.artifactId}</imageName>
        <!--指定標簽-->
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>
        <!-- 指定 Dockerfile 路徑-->
        <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>

        <!--指定遠程 docker api地址-->
        <dockerHost>http://192.168.159.130:2375</dockerHost>

        <!-- 這里是復制 jar 包到 docker 容器指定目錄配置 -->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!--jar 包所在的路徑  此處配置的 即對應 target 目錄-->
                <directory>${project.build.directory}</directory>
                <!-- 需要包含的 jar包 ,這里對應的是 Dockerfile中添加的文件名 -->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

6.  創建docker文件夾和Dockerfile文件,docker要在src/main里

 

Dockerfile的內容

FROM java:8
VOLUME /tmp
ADD test-mybatis-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8082
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

FROM:選擇的jdk

EXPOSE 是端口號和server.port=8082一致

ADD:第一個jar是打包的項目名 第二個是別名

7.idea的右邊找到Maven Projects,找到Lifecycle,雙擊package打包,第一次打包比較慢,需要騷騷的等等。

看到以下就說明成功了

8. 創建容器,找到剛剛生成的鏡像,點擊創建容器

 

Image ID 是打包生成的那個鏡像

Container name 容器名字隨便取

Bind ports 8080docker對外開放的端口,8082是項目端口(個人理解)

 9. 設置好后,啟動容器,啟動成功后去虛擬機查看是否啟動成功

可以看到,容器啟動成功。

10.訪問虛擬機ip+端口號

http://192.168.159.130:8080/test

能訪問,8080是設置容器時對外開放的端口號,而項目的端口是8082

11. Docker查看正在啟動容器docker ps,查看所有容器 docker ps -a,查看鏡像docker images

12.以上步驟就把springboot通過docker遠程部署在虛擬機的docker里了。但是有一個問題我沒有解決,就是每次打包后,需要把容器刪除后再啟動容器才能起作用。如果不刪容器直接啟動的話,還是原來的內容。

 

13. 查看日志,docker logs -f -t --tail 行數 容器id或者容器名

[root@huangsz ~]#  docker logs -f -t --tail 50 499189e519a0

 

 


免責聲明!

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



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