前端Dockerfile文件的內容:
FROM nginx:版本,如果不指定,默認是latest
COPY dist/ /usr/share/nginx/html/dist
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 端口
前端sh腳本文件內容:
appName=項目名
tar -xvf dist.tar
tag=$(date "+%Y%m%d%H%M%S")
echo echo "version : $appName-v$tag"
docker build -t $appName:$tag .
docker tag $appName:$tag 倉庫地址:$appName-v$tag
docker push 倉庫地址:$appName-v$tag
后端Dockerfile文件內容:
# 構建鏡像,執行命令
版本,如果不指定,默認是latest
FROM jdk鏡像:?
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
# 時區問題
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 字體
# COPY fonts/simsun.ttc /usr/share/fonts/simsun.ttc
VOLUME /tmp
COPY 文件名.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/文件名.jar"]
后端sh腳本文件內容:
#!/usr/bin/env bash
#啟動腳本的時候,傳遞版號 sh *.sh V1
app_name='文件名'
app_dir=.?
tag_name=$(date "+%Y%m%d%H%M%S")
# 刪除鏡像
echo "......刪除鏡像......"
images=(`docker images | grep ${app_name} | awk '{print $1,$2}'`)
idx=1
for((i=0;i<${#images[@]};i++))
do
? ?if [ $(($idx % 2)) = 0 ];then
? ? docker rmi "${images[i-1]}:${images[i]}"
? ? echo "${images[i-1]}:${images[i]} 刪除"
? ?fi
? ?((idx++))
done
# 創建鏡像
echo "..... 創建鏡像......."
echo ?"${app_name}:${tag_name}"
docker build -f ${app_dir}/Dockerfile -t "${app_name}:${tag_name}" .
# 獲取創建完鏡像的tag id
tag_id=`docker images | grep ${app_name} | awk '{print $3}'`
echo "tag=${tag_id}"
# 推送到k8s云上
docker tag ${tag_id} 倉庫地址:${app_name}${tag_name}
docker push 倉庫地址:${app_name}${tag_name}
echo "創建鏡像完成"
具體操作步驟:
將前后端各自的腳本文件放到對應的目錄下去執行,這里有一個前提,需要有相應的docker鏡像。
docker鏡像的來源可以從公共倉庫里面下載,不過涉及到訪問外網。國內也有鏡像,不同的公司也搭建了私服。可以通過命令將鏡像打成tar包拷出來,再用命令導入到服務器上
打成tar包的命令如下:
docker save -o? 文件名.tar? nginx:版本號
導入tar包的命令如下:
docker load < 文件名.tar
導入完成后用docker images查看一下鏡像
?
?