1. 程式人生 > >Docker生成web專案映象image的三種方式

Docker生成web專案映象image的三種方式

第一種:

  1、 先通過maven外掛打包生成jar檔案、上傳到linux系統上,同時在jar檔案的同級目錄下,生成Dockerfile檔案。

Dockerfile檔案的內容如下:

FROM java:8
VOLUME ./tmp
add eureka-server-1.0-SNAPSHOT.jar app.jar
#RUN bach -c 'touch /app.jar'
EXPOSE 8761
ENTRYPOINT ["java","-jar","/app.jar"]

   2、構建docker映象,構建命令如下:

  docker build -t ck/eureka-server:0.02 .

  3、生成docker映象檔案,如下所示:

  4、執行docker映象,生成容器,命令如下:

 docker run -p 8706:1111 ck/eureka-server:0.02

訪問http://ip:8706,可以訪問eureka主頁,容器啟動成功;

第二種:

   直接通過maven外掛生成映象檔案:

  1、在專案中引入docker-maven-plugin外掛:

         <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.12</version>
                <configuration>
                    <!-- 注意imageName一定要是符合正則[a-z0-9-_.]的,否則構建不會成功 -->
                    <!-- 詳見:https://github.com/spotify/docker-maven-plugin    Invalid 
                    repository name ... only [a-z0-9-_.] are allowed-->
                    <imageName>microservice-discovery-eureka</imageName>
                    <baseImage>java</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"] 
                    </entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

2、配置DOCKER_HOST環境變數:

3、執行映象生成命令:

mvn clean package docker:build

4、登陸docker主機檢視映象檔案:

5、啟動:略 

第三種:第二種方式缺乏靈活性,現在介紹第三種方式,還是利用Dockerfile構建映象:

1、在專案的src/main下新建一個docker目錄:

Dockerfile的內容如下:

FROM java:8
VOLUME ./tmp
add eureka-server-1.0-SNAPSHOT.jar app.jar
#RUN bach -c 'touch /app.jar'
EXPOSE 8761
ENTRYPOINT ["java","-jar","/app.jar"]

2、 修改pom.xml檔案,將<baseImage>和<entryPoint>標籤去掉,同時加上<dockerDirectory>標籤,指明Dockerfile的檔案路徑。

              <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.12</version>
                <configuration>
                    <!-- 注意imageName一定要是符合正則[a-z0-9-_.]的,否則構建不會成功 -->
                    <!-- 詳見:https://github.com/spotify/docker-maven-plugin    Invalid 
                    repository name ... only [a-z0-9-_.] are allowed-->
                    <imageName>ck/eureka-server:0.01</imageName>
                    <!--<baseImage>java</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"] 
                     </entryPoint>-->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

3、執行映象生成命令:

mvn clean package docker:build