Docker生成web專案映象image的三種方式
阿新 • • 發佈:2018-12-19
第一種:
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