docker 構建自己的image 鏡像文件


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>
View Code

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部署流程,有點復雜,但是熟練后,應該很簡單。接着學。


免責聲明!

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



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