Idea使用docker插件部署服務到遠程服務器


一、docker部署單個服務

1、Idea安裝docker插件

首先給Idea安裝docker插件,方式為:File ——> Settings ——> Plugins,安裝后重啟IDE

2、配置遠程docker主機

1)首先登陸遠程docker主機,修改配置文件 /usr/lib/systemd/system/docker.service

#vim /usr/lib/systemd/system/docker.service

打開文件,找到 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 這一行,在后面添加-H tcp://0.0.0.0:2375,表示打開2375端口,支持遠程連接docker

2)修改文件后保存,重新加載配置文件並重啟docker服務 

#systemctl daemon-reload

#systemctl restart docker.service

3)Idea配置docker主機,File ——> Settings ——>Build,Execution,Depolyment ——> Docker,添加一個Docker主機,TCP socket中添加遠程主機+端口,以tcp://開頭,

tcp://192.168.0.6:2375,添加后會自動連接遠程docker主機,下方看到connection successful表示連接成功,否則表示連接失敗。

 

4)docker主機連接成功后,在docker插件面板中可以看到docker主機的容器和鏡像,以及docker容器運行的日志等信息

3、創建Dockerfile文件

在服務根目錄創建docker文件夾,路徑如下

在docker目錄創建一個Dockerfile文件,內容:

FROM java:8
VOLUME /tmp
ADD land-service-hi.jar app.jar
EXPOSE 8800
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

內容參數解釋見docker

4、配置pom文件

在build的plugins插件標簽中添加:

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <!-- 打包成可執行jar包 -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>utf-8</encoding>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!--將插件綁定在某個phase執行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--用戶只需執行mvn package ,就會自動執行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--指定docker文件目錄-->
                    <dockerDirectory>${project.basedir}/docker</dockerDirectory>
                    <!--指定生成的鏡像名-->
                    <imageName>land/${project.artifactId}</imageName>
                    <!--指定標簽-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!--指定遠程 docker api地址-->
                    <dockerHost>http://192.168.0.6: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>
        </plugins>

5、打包部署

通過上面一系列配置后,maven打包服務時將自動build 鏡像到遠程主機,通過docker插件的面板可以看到鏡像已經推送到遠程主機

#mvn clean package -DskipTests

二、docker部署多個服務

1、服務創建容器

給每個服務都進行上面的配置后,使用maven在父項目打包時,將自動上傳所有服務的鏡像到遠程docker主機。這樣,雖然上傳了服務鏡像到遠程主機,但遠程主機並沒有創建和啟動對應的容器。

方法:可以通過在docker面板手動創建容器,以后每次使用maven打包服務時,不僅會上傳鏡像同時還會自動重啟遠程主機的docker容器。

同樣地,為每個服務手動創建一個容器,然后在項目根目錄打包時,每個服務的鏡像都會上傳到遠程docker主機並自動重啟容器。

2、使用docker-compose

可以使用上面手動創建容器的方法,讓遠程docker主機啟動容器。也可以待各個服務鏡像上傳到遠程主機后,使用docker-compose完成服務編排,然后啟動各個微服務。

1)在遠程docker主機編輯docker-compose.yml文件

version: '2'
services:
  land-eureka:
    image: land/land-eureka:latest
    container_name: land-eureka
    ports:
      - '8761:8761'

  land-zuul:
    image: land/land-zuul:latest
    container_name: land-zuul
    ports:
      - '9000:9000'

  land-netty:
    image: land/land-netty:latest
    container_name: land-netty
    ports:
      - '8000:8000'

  land-service-hi:
    image: land/land-service-hi:latest
    container_name: land-service-hi
    ports:
      - '8800:8800'

  land-service-consumer:
    image: land/land-service-consumer:latest
    container_name: land-service-consumer
    ports:
      - '8801:8801'

2)在docker-compose.yml文件目錄下運行docker-compose命令,啟動容器

#docker-compose up -d

 

 


免責聲明!

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



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