1. 程式人生 > >Dockerfile之容器中執行MyEclipse搭建的JavaWeb專案(Docker系列)

Dockerfile之容器中執行MyEclipse搭建的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映象了。

開始構建Docker映象

  • 建立一個本示例的資料夾webapp
  • 將專案的WebRoot拷貝到該資料夾
  • 建立Dockerfile檔案

結構如下圖:

構建Docker映象結構圖

  • 建立映象
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快速搭建網站》

本文章來自【知識林】