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

1、docker部署單個服務

一、Idea安裝docker插件java

首先給Idea安裝docker插件,方式爲:File ——> Settings ——> Plugins,安裝後重啓IDEspring

二、配置遠程docker主機docker

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

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

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

2)修改文件後保存,從新加載配置文件並重啓docker服務 app

#systemctl daemon-reloaddom

#systemctl restart docker.servicesocket

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

tcp://192.168.0.6:2375,添加後會自動鏈接遠程docker主機,下方看到connection successful表示鏈接成功,不然表示鏈接失敗。

 

4)docker主機鏈接成功後,在docker插件面板中能夠看到docker主機的容器和鏡像,以及docker容器運行的日誌等信息

三、建立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

四、配置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>

五、打包部署

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

#mvn clean package -DskipTests

2、docker部署多個服務

一、服務建立容器

給每一個服務都進行上面的配置後,使用maven在父項目打包時,將自動上傳全部服務的鏡像到遠程docker主機。這樣,雖然上傳了服務鏡像到遠程主機,但遠程主機並無建立和啓動對應的容器。

方法:能夠經過在docker面板手動建立容器,之後每次使用maven打包服務時,不只會上傳鏡像同時還會自動重啓遠程主機的docker容器。

一樣地,爲每一個服務手動建立一個容器,而後在項目根目錄打包時,每一個服務的鏡像都會上傳到遠程docker主機並自動重啓容器。

二、使用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

相關文章
相關標籤/搜索