java應用docker化
java應用的docker化很簡單,只需要編寫一個dockerfile檔案
FROM openjdk:8
MAINTAINER DAOSHU
LABEL app="KM-JIAOGUAN" version="1.0.0-SNAPSHOT" by="DAOSHU"
VOLUME /tmp
ADD km-jiaoguan-web-0.0.1-SNAPSHOT.jar /app/app.jar
COPY lib /app/lib
COPY config /app/config
WORKDIR /app/
EXPOSE 8094
ENTRYPOINT ["java","-jar","./app.jar"]
僅僅一個dockerfile已經可以完成java應用的docker化了,為了方便操作,我自己寫了一個shell指令碼,可以完成docker映象的一鍵打包,啟動,還可配置要儲存的歷史映象版本個數。
#!/bin/bash
#此指令碼可以一鍵構建映象並執行,需要在當前路徑下有dockerfile檔案以及有一個空白version.txt檔案來記錄版本資訊
#容器內部暴露的埠號
container_port=8094
#容器要對映到宿主機的埠號
port=8094
#構建的映象名稱
image_name="km-jiaoguan"
#容器啟動之後的服務名
container_name="km-jiaoguan"
#預設要保留歷史映象數量
image_number=5
#檢視上次最大版本號
version=`sed -n '$p' version.txt`
echo "最後一個${image_name}的版本號是${version}"
newversion=`expr ${version} + 1 `
docker build -t ${image_name}:${newversion} .
tag=`docker images | grep ${image_name} | awk '{print $2}' | sort -n`
echo "現存在的版本有 "
echo "${tag[@]}"
flag=0
for loop in ${tag[@]}
do
if [ ${loop} == ${newversion} ]
then
echo "新映象構建成功"
echo ${newversion} > version.txt
flag=1
fi
size=`docker images | grep -c ${image_name}`
if [ ${size} -gt ${image_number} ]
then
echo "只保留${image_number}個映象,刪除版本為${loop}的${image_name}歷史映象"
docker rmi ${image_name}:${loop}
fi
done
if [ ${flag} -eq 1 ]
then
docker stop ${container_name}
if [ $(docker ps | grep -c ${container_name}) -lt 1 ]
then
echo "成功停止舊容器${container_name}"
fi
docker rm ${container_name}
if [ $(docker ps -a| grep -c ${container_name}) -lt 1 ]
then
echo "成功移除舊容器${container_name}"
fi
docker run --name=${container_name} --restart=always -p ${port}:${container_port} -d ${image_name}:${newversion}
if [ $(docker ps -a| grep -c ${container_name}) -ge 1 ]
then
echo "新容器${container_name}啟動成功"
fi
else
echo "映象${image_name}構建失敗"
fi
相關文章
- SpringBoot應用Docker化Spring BootDocker
- JKube幫助Java應用Docker化部署到KubernetesJavaDocker
- Java服務端容器化:Docker與Kubernetes的應用Java服務端Docker
- 使用Java後端對Angular應用進行Docker化 -BhargavJava後端AngularDocker
- Docker容器化部署Python應用DockerPython
- Java應用Docker化部署GC變長的踩坑經歷JavaDockerGC
- 如何Docker化任意一個應用Docker
- 使用Docker WildFly和wildfly-maven-plugin實現Java應用容器化DockerMavenPluginJava
- DOCKER應用Docker
- Spring Boot + MongoDB 應用的 Docker 化實踐Spring BootMongoDBDocker
- Jenkins + Docker + Gitee自動化部署SpringBoot應用JenkinsDockerGiteeSpring Boot
- Docker容器與虛擬化技術:OpenEuler 部署 docker容器應用Docker
- 手把手docker部署java應用(初級篇)DockerJava
- Docker_Docker應用部署4Docker
- 最佳化Spring Boot應用的Docker打包速度Spring BootDocker
- 徹底釋放虛擬化,Docker的應用Docker
- 利用ELK搭建Docker容器化應用日誌中心Docker應用日誌
- 教你使用Docker容器化Node.js應用程式DockerNode.js
- zabbix容器化安裝及監控docker應用Docker
- 用 Docker 建立 serverless 應用DockerServer
- 使用Docker容器化SpringBoot+Dubbo應用的實踐DockerSpring Boot
- .NET Core容器化之多容器應用部署(Docker-Compose)Docker
- docker 打包 php 應用DockerPHP
- 應用容器引擎-DockerDocker
- Docker部署Angular應用DockerAngular
- 使用Docker容器化部署實踐之Django應用部署(一)DockerDjango
- ?從零開始Docker化你的Node.js應用DockerNode.js
- 將SpringBoot應用Docker化並部署到SAP雲平臺Spring BootDocker
- 使用 Docker 部署 Node 應用 - 映象檔案尺寸的優化Docker優化
- 谷歌助力,快速實現 Java 應用容器化谷歌Java
- 使用Docker安裝應用Docker
- Docker常用的應用部署Docker
- Docker管理應用資料Docker
- Docker Compose 多容器應用Docker
- 使用 Docker 部署 Node 應用Docker
- Java專案Docker化改造(一)JavaDocker
- Docker 入門系列三:Docker 應用部署-MySQLDockerMySql
- Docker 入門系列三:Docker 應用部署-NginxDockerNginx