Docker應用系列(四)| 部署java應用


本示例基於Centos 7,假設目前使用的賬號為release,擁有sudo權限。

由於Docker官方鏡像下載較慢,可以開啟阿里雲的Docker鏡像下載加速器,可參考此文進行配置。

主機上服務安裝步驟如下:

 

1. 安裝docker服務:

 sudo yum install -y docker

 

2. 啟動docker服務: 

sudo service docker start

 

3. 查找centos鏡像:

sudo docker search centos

 

4. 下載官方centos鏡像:

sudo  docker pull docker.io/centos

 

5. 下載完后可檢查鏡像:

sudo docker images 

 

6. 在主機上創建具備java和unzip功能的centos鏡像:

mkdir ~/centos-java
cd ~/centos-java
touch Dockerfile
vi Dockerfile
#內容如下:
from docker.io/centos:latest
run yum install -y java
run yum install -y unzip

創建好Dockerfile后,我們build這個鏡像:

cd ~/centos-java

sudo docker build -t centos/java:latest .

build成功后,可通過如下命令查看最新的鏡像列表:

sudo docker images

 

7. 我們各個java應用(假定都為.zip格式的打包文件,不依賴於web服務器),都將基於該鏡像上,創建新的應用鏡像。

 

mkdir ~/myapp
cd ~/myapp
touch Dockerfile
vi Dockerfile
#內容如下:
from centos/java:latest
run mkdir -p /opt/myapp
copy myapp.zip /opt/myapp
run unzip /opt/myapp/myapp.zip -d /opt/myapp
run chmod +x /opt/myapp/startup.sh
expose 8080
cmd ["/opt/driver2/startup.sh"]

內容說明:

  • myapp.zip 是我們的java應用,需要你准備好放在~/myapp目錄下,該文件會被拷入新鏡像中的/opt/myapp目錄下
  • startup.sh腳本參考內容為:
#!/bin/sh  
cd /opt/myapp
java -server -Xmx2g -Xms2g -cp .:myapp-1.0.jar:./lib/* com.yourcompany.Application 
  • 需要注意的是java以前台方式運行,不要以后台方式(nohup)運行,否則docker容器啟動后很快就會停止
  • 另外假定你的應用的輸出日志為 /var/log/myapp下

創建好Dockerfile后,build新鏡像:

cd ~/myapp

sudo docker build -t myapp:latest .

build成功后,就可以得到一個名稱為myapp的新鏡像

 

8. 運行新鏡像:

sudo mkdir -p /var/log/myapp
sudo docker run -p 8080:8080  -v /var/log/myapp/:/var/log/myapp -v /etc/localtime:/etc/localtime:ro --name myapp -d myapp 

命令說明:

-v /etc/localtime:/etc/localtime:ro的目的是為了使容器時間與主機時間同步一致 

 

9. 檢查容器啟動情況:

容器的狀態應該為Up,可執行如下觀察:

sudo docker ps

若未能起來,我們可以觀察日志,了解出錯原因:

sudo docker logs 容器id

當然,成功起來后,可以在主機的目錄下查看日志以方便跟蹤:

tail -f -n 500 /var/log/myapp/app.log


免責聲明!

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



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