本文章來自【知識林】
在上一篇文章《10 - Dockerfile 之 tomcat中運行MyEclipse搭建Web項目》中為這一篇的內容準備了原材料。這篇文章將講述如何將上一篇文章中的Javaweb項目制作成Docker的鏡像。
應用程序在Docker容器中運行和在物理機運行的原理是一樣的,所以我們部署這個Javaweb項目到Docker中的步驟應該如下:
- 服務器支持(這里選擇Centos7)
- 安裝Java環境
- 安裝Tomcat環境
- 將Tomcat根目錄下的
webapps/ROOT
目錄下的所有文件(夾)刪除 - 將自己開發的web項目的WebRoot目錄下的所有文件(夾)復制到Tomcat的
webapps/ROOT
下 - 啟動Tomcat服務
步驟已經很清楚了,但要制作Docker鏡像還得借助另一樣東西:Dockerfile。
Dockerfile是一個包含有Docker能識別的特殊指令的文件。當創建好Dockerfile文件之后就可以使用docker build
來創建docker鏡像了。
如果對Dockerfile指令不熟悉的可以參數文章《12 - Dockerfile指令集》。
開始構建Docker鏡像
- 創建一個本示例的文件夾
webapp
- 將項目的
WebRoot
拷貝到該文件夾 - 創建Dockerfile文件
結構如下圖:

- 創建鏡像
docker build -t "zsl131/web01" .
注意:
docker build
:創建Docker鏡像
-t "zsl131/web01"
:指定鏡像名稱,這里指定為zsl131/web01
;鏡像名稱由倉庫和名稱兩部份組成,zsl131
為我在hub.docker.com
注冊申請的倉庫名稱,web01
才是這個鏡像的名稱
.
:注意前面有個空格,表示在當前目錄下找Dockerfile文件來構建鏡像。
下面是本示例創建Docker鏡像的Dockerfile,為了更加認識Dockerfile可以將下面文件中的指令全部刪除,然后每加一行執行一次:docker build -t "zsl131/web01" .
,這樣可以看到使用Dockerfile來構建鏡像時的各種信息:
# 以Centos7作為基礎鏡像
FROM centos:7
# 在不知道該如何安裝jdk時可以啟用下面這行命令,然后就直接運行:docker build
#RUN yum search java | grep jdk
# 選擇適合的jdk版本安裝
RUN yum install -y java-1.7.0-openjdk.x86_64
# 在根目錄下創建一個名為web的目錄
RUN mkdir /web/
# 設置工作目錄為/web,設置之后可以使用:RUN pwd來查看當前的路徑
WORKDIR /web/
# 安裝wget以方便下載tomcat
RUN 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
# 設置工具目錄
WORKDIR /web/apache-tomcat-6.0.48/webapps/ROOT/
# 查看當前目錄下的所有文件(夾),這時會有tomcat自帶的一些文件
RUN ls -l
# 刪除當前目錄下的所有文件(夾)
RUN rm -rf *
# 刪除后再列表,這時沒有任何文件
RUN ls -l
# 將WebRoot目錄下的所有文件(夾)復制到當前目錄即(webapps/ROOT),這里也可以使用COPY指令
ADD WebRoot .
# 復制完成后可以再列表看一下是否復制成功
RUN ls -l
# 設置工作目錄到tomcat的bin目錄下,以方便啟動tomcat服務
WORKDIR /web/apache-tomcat-6.0.48/bin/
# 對外暴露tomcat的8080端口
EXPOSE 8080
# 啟動tomcat服務,這樣啟動不會在docker run時被覆蓋
ENTRYPOINT ["./catalina.sh", "run"]
完成Dockerfile的編寫后,最后再通過以下命令構建鏡像:
docker build -t "zsl131/web01" .
通過命令docker images
可以查看剛剛構建的鏡像。
運行容器
docker run -d --name web01 -p 80:8080 zsl131/web01
說明:
docker run
:運行容器命令
-d
:后臺運行
--name web01
:設置容器名稱為web01
-p 80:8080
:將對外暴露的端口指定為80,即當外部訪問80端口時會映射到容器內的8080端口
zsl131/web01
:鏡像名稱
查看容器啟動日志
docker logs web01
說明:
docker logs
:查看容器日志命令
web01
:被查看的容器名稱,這里是web01
訪問
打開瀏覽器輸入:http://192.168.99.100即可訪問由MyEclipse創建的Javaweb項目了。
注意:192.168.99.100
是我docker宿主機的ip地址,可以通過docker-machine inspect test01
來查看,其中test01
是docker宿主機的名稱。具體可以參數文章《09 - docker run 之 Wordpress+mysql快速搭建網站》
本文章來自【知識林】