這篇文章將講述如何將上一篇文章中的Javaweb項目制作成Docker的鏡像。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
應(yīng)用程序在Docker容器中運行和在物理機運行的原理是一樣的,所以我們部署這個Javaweb項目到Docker中的步驟應(yīng)該如下:
服務(wù)器支持(這里選擇Centos7) 安裝Java環(huán)境 安裝Tomcat環(huán)境 將Tomcat根目錄下的webapps/ROOT目錄下的所有文件(夾)刪除 將自己開發(fā)的web項目的WebRoot目錄下的所有文件(夾)復(fù)制到Tomcat的webapps/ROOT下 啟動Tomcat服務(wù)步驟已經(jīng)很清楚了,但要制作Docker鏡像還得借助另一樣?xùn)|西:Dockerfile。
Dockerfile是一個包含有Docker能識別的特殊指令的文件。當創(chuàng)建好Dockerfile文件之后就可以使用docker build來創(chuàng)建docker鏡像了。
開始構(gòu)建Docker鏡像
創(chuàng)建一個本示例的文件夾webapp 將項目的WebRoot拷貝到該文件夾 創(chuàng)建Dockerfile文件結(jié)構(gòu)如下圖:
構(gòu)建Docker鏡像結(jié)構(gòu)圖
創(chuàng)建鏡像
docker build -t "zsl131/web01" .
注意:
docker build:創(chuàng)建Docker鏡像
-t "zsl131/web01":指定鏡像名稱,這里指定為zsl131/web01;鏡像名稱由倉庫和名稱兩部份組成,zsl131為我在hub.docker.com注冊申請的倉庫名稱,web01才是這個鏡像的名稱
.:注意前面有個空格,表示在當前目錄下找Dockerfile文件來構(gòu)建鏡像。
下面是本示例創(chuàng)建Docker鏡像的Dockerfile,為了更加認識Dockerfile可以將下面文件中的指令全部刪除,然后每加一行執(zhí)行一次:docker build -t "zsl131/web01" .,這樣可以看到使用Dockerfile來構(gòu)建鏡像時的各種信息:
# 以Centos7作為基礎(chǔ)鏡像FROM centos:7# 在不知道該如何安裝jdk時可以啟用下面這行命令,然后就直接運行:docker build#RUN yum search java | grep jdk# 選擇適合的jdk版本安裝RUN yum install -y java-1.7.0-openjdk.x86_64# 在根目錄下創(chuàng)建一個名為web的目錄RUN mkdir /web/# 設(shè)置工作目錄為/web,設(shè)置之后可以使用:RUN pwd來查看當前的路徑WORKDIR /web/# 安裝wget以方便下載tomcatRUN yum install -y wget# 下載tomcat壓縮文件RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-6/v6.0.48/bin/apache-tomcat-6.0.48.tar.gz# 解壓tomcat文件RUN tar zxvf apache-tomcat-6.0.48.tar.gz# 設(shè)置工具目錄WORKDIR /web/apache-tomcat-6.0.48/webapps/ROOT/# 查看當前目錄下的所有文件(夾),這時會有tomcat自帶的一些文件RUN ls -l# 刪除當前目錄下的所有文件(夾)RUN rm -rf *# 刪除后再列表,這時沒有任何文件RUN ls -l# 將WebRoot目錄下的所有文件(夾)復(fù)制到當前目錄即(webapps/ROOT),這里也可以使用COPY指令A(yù)DD WebRoot .# 復(fù)制完成后可以再列表看一下是否復(fù)制成功RUN ls -l# 設(shè)置工作目錄到tomcat的bin目錄下,以方便啟動tomcat服務(wù)WORKDIR /web/apache-tomcat-6.0.48/bin/# 對外暴露tomcat的8080端口EXPOSE 8080# 啟動tomcat服務(wù),這樣啟動不會在docker run時被覆蓋ENTRYPOINT ["./catalina.sh", "run"]
完成Dockerfile的編寫后,最后再通過以下命令構(gòu)建鏡像:
docker build -t "zsl131/web01" .
通過命令docker images可以查看剛剛構(gòu)建的鏡像。
運行容器
docker run -d --name web01 -p 80:8080 zsl131/web01
說明:
docker run:運行容器命令
-d:后臺運行
--name web01:設(shè)置容器名稱為web01
|
新聞熱點
疑難解答