Docker 構建 Java Web 開發環境(一)

gary-liu發表於2016-07-30

Docker 構建 Java Web 開發環境(一)

使用 Docker 構建映象的兩種方法:

  1. 使用 docker commit 命令,直接在容器中操作(安裝軟體及配置檔案等),比較簡單直觀;

  2. 使用docker build命令和 Dockerfile檔案,可以模板化映象構建過程,方便複用。

所以推薦使用第二種方法,但本文是用第一種方法,用第二種方法構建請看另一篇文章:Docker 構建 Java Web 開發環境——使用Dockerfile(二)
docker 的安裝和簡單使用請看另一篇文章:Mac 安裝 Docker for Mac,下面直接開始使用。

準備工作

準備好 jdk8,tomcat8 的壓縮包,放到本地的一個資料夾下,比如 /data/software

開始製作

可以到 docker hub 倉庫中拉取centos映象(這個倉庫可能會比較慢,也可以到國內的一些提供映象的倉庫中獲取,我是從公司的倉庫中拉的),如何操作可以看 docker 安裝那篇文章。

獲得centos的映象之後

docker images       //會列出本地已有的映象

記住 centos 的 image id 比如說是 acc93762c23b(這裡也可以不用 image id,也可以用專案名+版本號)
執行命令

docker run -it -v /data/software/:/data/software/ acc93762c23b /bin/bash

-i 表示以“互動模式”執行容器
-t 表示容器啟動後會進入其命令列
-v 表示將本地目錄掛載到容器中對應的目錄
Mac 上在掛載目錄時,要在 docker—>preference 設定中先新增要掛載的目錄 /data/software ,否則貌似無法掛載

這樣就執行並進入了容器中,下面的操作就和在普通的 cents 系統中安裝軟體一樣了,到容器中的 /data/software目錄下會看到本地系統的檔案都已經掛載到了該目錄下,安裝配置jdk可以參考: Mac、CentOS jdk安裝及配置

編寫啟動指令碼

需要編寫個啟動指令碼,當執行該容器時,執行指令碼來初始化容器中的環境,就像上面執行容器的命令中的 /bin/bash 的作用一樣
在容器中/data 目錄下新建指令碼 start.sh
指令碼內容如下

source /etc/profile             //配置環境的位置,這個必須要
sh /usr/local/tomcat/bin/catalina.sh run  //自己安裝的檔案位置  
chmod u+x /data/start.sh       //為執行指令碼新增執行許可權

建立映象

上面操作完後,用exit 命令退出容器

docker ps         //可以看出容器已關閉
docker ps -l       //顯示上次執行的容器,並記下容器id(CONTAINER ID)

根據上面的容器 id 建立個新映象:

docker commit 57c312bbaad1 liu/javaweb:1.0.0   //比如上個容器id是 57c312bbaad1 ,和git類似,可以加 -m “註釋”

使用建立的映象啟動一個容器

docker image    //檢視剛建立的映象id (IMAGE ID)比如:25c5298b1a36 

docker run -d -p 8080:8080 --name javaweb 25c5298b1a36  /data/start.sh  //啟動容器命令

-d 以“守護模式”執行容器,即容器在後臺執行
-p 表示宿主機與容器的埠對映 (因此可以用宿主機的不同埠對映多個容器的8080埠,來做到獨立執行多個 java web 應用)

回到宿主機,在瀏覽器中輸入 http://local_ip:8080/ 看映象是否製作成功

如果想進容器看看日誌什麼的,可以執行下面命令

docker exec -it 0234d150d48f /bin/bash  //0234d150d48f是正在執行的容器id 可以從 docker ps 中獲得

執行本地應用程式,可以將本地 war 目錄掛載到容器中 tomcat 的 webapps 目錄下,可以參見Docker 構建 Java Web 開發環境——使用Dockerfile(二)

[參考]
使用Docker搭建Java Web執行環境

相關文章