docker build 構建自己的鏡像文件。
1、在本地工程中運行生成一個springboot的可運行的jar。
因為我習慣用eclipse,所以在eclipse下新建一個springboot的工程,firstSpringboot的工程。
maven配置文件中,注意:必須指定生成文件后運行的主函數mian,否則可能導致的結果是無法訪問main函數的錯誤。
maven配置的pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.springboot</groupId> <artifactId>firstSpringboot</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> </dependencies> <build> <!-- 生成文件的包名稱 --> <finalName>firstSpringboot</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- 必須指定主函數 --> <configuration> <mainClass>com.springboot.Application</mainClass> <executable>true</executable> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </project>
springmvc中,訪問后,會打印出這樣一句話。
執行 maven命令打包,也可通過工具直接build。mvn clean package 或install 都可以。
生成文件后如圖所示。
2、在本地測試一下是否可訪問。
在本機doc下啟動我們的jar包看看看是否可以啟動。
如果沒主函數main指定,會報找不到主干數錯誤。
doc下啟動服務命令:
java -jar \路徑\firstSpringboot \target\firstSpringboot-0.0.1-SNAPSHOT.jar
啟動完成,本地測試,在瀏覽器中輸入 :
http://localhost:8090/hello
訪問通了,可見我們的jar包是ok的,頁面展示如下:
3、在/usr/local下創建一個dockerapp的目錄,將本地生成的jar文件上傳到docker服務器上的這個目錄。/usr/local/dockerapp
cd /usr/loca
mkdir dockapp
然后通過ftp、或者secureCRT將我們的jar包上傳到服務器下。
4、在上傳文件的目錄/usr/local/dockerapp 下新建一個Dockerfile文件,文件內容定義jar包信息在docker容器中的名稱。保存文件。
創建Dockerfile文件。
文件內容:意思是使用的是jdk8,將firstSpringboot.jar文件添加到docker容器下,並且名字為first-springboot.jar,對外聲明啟動端口是8090,跟我們的application.yml配置文件一樣。最后就是執行命令生成
###java8環境鏡像
FROM java:8 ###復制文件到容器app-springboot ADD firstSpringboot.jar /first-springboot.jar ###聲明啟動端口號 EXPOSE 8090 ###配置容器啟動后執行的命令 ENTRYPOINT ["java","-jar","/first-springboot.jar"]
生產可用Dockerfile
# 若用docker部署,將該文件復制到項目工程下 FROM openjdk:8-jre-alpine VOLUME /tmp ADD 項目應用名稱-0.0.1-SNAPSHOT.jar app.jar # RUN bash -c 'touch /app.jar' ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"] EXPOSE 8761
執行成功。如圖所示:
5、用docker build -t 文件名稱 . 這個命令構建鏡像文件image ,后面那個“.”表示當前目錄。
docker build -t first-springboot .
6、查看鏡像文件是否生成。
docker images
7、運行docker run 命令啟動我們的應用。
啟動應用。
docker run -p 8080:8090 first-springboot
服務啟動成功,如下圖所示
8、測試應用是否可訪問。
訪問地址:http://192.168.5.129:8080/hello
瀏覽器顯示如下:證明很ok。
9、測試原端口是否可以訪問。
訪問:http://192.168.5.129:8090/hello
請求失敗。。
10、設置服務在后台運行
#在后台運行,在run后面加-d docker run -d -p 8080:8090 first-springboot #查看有哪些容器在運行 docker ps
如圖
總結:docker部署流程,有點復雜,但是熟練后,應該很簡單。接着學。