国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 Docker 搭建前端 Java 開發(fā)環(huán)境

microelec / 372人閱讀

摘要:解決的痛點(diǎn)免搭建后端開發(fā)環(huán)境。開發(fā)環(huán)境改變只需要改變鏡像就能同步更新。啟動(dòng)這個(gè)新建的鏡像。

這篇文章是為了解決前后端開發(fā)沒有徹底分離的坑,因?yàn)槲宜居玫氖莏ava,入職第一天就是搭建本地開發(fā)環(huán)境,看見了多年不見的eclipse的圖標(biāo)出現(xiàn)我的電腦上,我是難過的。后來(lái)知道并不是我一個(gè)人有此感受。依稀記得有個(gè)同學(xué)整整一天項(xiàng)目都沒跑起來(lái)的崩潰感。為了解決這個(gè)問題我們嘗試了很多方案,但是大大小小都有許多坑。
直到有一天....我坐在地鐵上,看著對(duì)面的妹子發(fā)呆,忽然一道閃電滑過,地鐵突然停了!
為什么我突然想不起當(dāng)天那個(gè)妹子長(zhǎng)什么樣子了~好惆悵。

解決的痛點(diǎn)

免搭建后端開發(fā)環(huán)境。

開發(fā)環(huán)境改變只需要改變鏡像就能同步更新。

不需要eclipse等IDE工具。

切換開發(fā)項(xiàng)目

解決思路

利用docker啟動(dòng)Ubuntu鏡像,在容器中搭建好項(xiàng)目需要的開發(fā)環(huán)境,使用掛載卷將本地代碼掛載到容器中,使用容器中的環(huán)境編譯運(yùn)行代碼,宿主機(jī)通過 docker 暴漏出的端口訪問容器中的服務(wù),這樣前端的開發(fā)機(jī)上就只需要部署docker就搞定了。

關(guān)于docker 了解docker

本文并不打算細(xì)講docker的知識(shí),相關(guān)的文章有很多,如果有興趣可以看 這本書,對(duì)于docker的使用我也僅限于此工具的開發(fā),如果有不對(duì)的地方還有大家指出來(lái)。

加速器

daocloud 加速器

搭建環(huán)境

下載和安裝好docker之后我們就可以開始了,我們下面講的都是java,不過其他環(huán)境同理。

獲取 Ubuntu 鏡像。

docker pull ubuntu

完成后執(zhí)行 docker images 就能看到一個(gè)剛剛更新的鏡像了。

進(jìn)入容器

docker run -it ubuntu

安裝軟件、配置環(huán)境變量

首先更新apt-get
apt-get update

接下來(lái)就可以使用 apt-get install * 安裝你需要的軟件了,如果沒有就下載安裝包自行安裝,同時(shí)配置好環(huán)境變量,這里就不贅述了。

啟動(dòng)服務(wù)

進(jìn)入tomcat目錄,啟動(dòng)服務(wù),在瀏覽器打開 0.0.0.0:8080, 如果沒有錯(cuò)的話你會(huì)看到該服務(wù)器無(wú)法訪問。這是因?yàn)槲覀儎偛艈?dòng)的服務(wù)是在docker內(nèi),如果不做一些操作的話我們是無(wú)法訪問到docker內(nèi)部的服務(wù)的。

所以,我們先退出容器

exit

退出之后執(zhí)行 docker ps -a,就能看到我們剛才的容器依然還在,可能大多剛接觸docker的人都會(huì)犯這個(gè)錯(cuò)誤,以為退出容器之后容器就銷毀了,其實(shí)不然。

如果我們想再進(jìn)入這個(gè)容器可以執(zhí)行下面的命令,容器ID請(qǐng)復(fù)制自己的。
docker exec -it 容器ID bash

雖然容器還在運(yùn)行,但是他并沒有持久化,為了防止萬(wàn)一,在我們修改容器里面的內(nèi)容之后盡快持久化。

docker commit 容器ID java

這個(gè)命令的意思是將我們?nèi)萜鞒志没癁橐粋€(gè)新的鏡像,名字叫java。

啟動(dòng)這個(gè)新建的鏡像。

docker run -it -p 8080:8080 java

注意看我們的啟動(dòng)命令發(fā)生了變化,多了一個(gè) -P 這個(gè)命令的意思是將容器內(nèi)的 8080 端口暴漏到宿主機(jī)上。

再次訪問 0.0.0.0:8080,我們就能看到那只小花貓了,真可愛。

剛才那個(gè)容器還在占用我們的內(nèi)存怎么辦,干掉他。

docker rm 容器ID

至此我們的第一步已經(jīng)完成了,接下來(lái)我們就要集成我們的代碼了。

集成代碼

我們剛才啟動(dòng)的容器是一個(gè)完全的獨(dú)立的黑盒子,它根本不知道我們的代碼再哪里,所以我們就要使用docker的掛載卷讓宿主機(jī)和容器可以共享目錄。

不好意思,我們又要干掉剛才啟動(dòng)的那個(gè)容器了。

docker run -it -v /Users/name/web:/opt/root -p 8080:8080 java

我們的啟動(dòng)命令又加入了新成員 -v。這個(gè)命令的意思就是將用戶根目錄下的 web 目錄掛在到容器中 /opt/root 目錄下。

進(jìn)入目錄后我們就能發(fā)現(xiàn)web目錄下的文件靜靜的躺在里面,像是沉睡多年的瑪麗蘇在等待你的呼喚。

開始呼喚吧。

mvn clean install -U -Plocal -DskipTests

一段時(shí)間過后我們就會(huì)看到打包成功的提示,將war包c(diǎn)opy到 tomcat webapps 目錄下,就能訪問你的項(xiàng)目了。

至此我們的項(xiàng)目終于跑起來(lái)了,但是有幾個(gè)問題。

每次都要跑這么長(zhǎng)的命令?好麻煩。

每次改代碼都要重新打包,時(shí)間很長(zhǎng)。

啟動(dòng)日志怎么看?報(bào)錯(cuò)了怎么辦?

怎么修改前端模板文件不需要重啟服務(wù)?

基于這些問題,我們就需要寫一個(gè)腳本來(lái)解決了。

shell腳本

腳本將提供下面幾個(gè)指令

-y 更新maven包-編譯-打包-發(fā)布-啟動(dòng)tomcat

-p 編譯-打包-發(fā)布-啟動(dòng)tomcat

-r 重啟tomcat

-c 重新編譯java文件-發(fā)布-啟動(dòng)tomcat

-w 監(jiān)聽vm文件,默認(rèn)5S同步一次

-l 查看tomcat日志

-h 幫助

# 需要變動(dòng)的變量
#################################################################

# 環(huán)境變量,根據(jù)conf目錄下選擇

DEV="local"

#################################################################

# 不需要改動(dòng)的變量
# war包地址
WAR_URL="/opt/root/target/*.war"

# tomcat 地址
TOM_URL="/usr/share/tomcat7"

# 項(xiàng)目啟動(dòng)地址
TOM_ROOT="${TOM_URL}/webapps"

# 文件監(jiān)聽間隔,單位秒
WT=5

# 拷貝 vm
WC_VM="src/main/webapp/WEB-INF/tpl /usr/share/tomcat7/webapps/ROOT/WEB-INF/"

# 拷貝class
WC_JAVA="target/classes /usr/share/tomcat7/webapps/ROOT/WEB-INF/"

# 通用方法
# 

# 使用新包
function newwar(){

    # 刪除舊包
    rm -rf ${TOM_ROOT}/*

    # 移動(dòng)war包
    mv ${WAR_URL} ${TOM_ROOT}/ROOT.war
}

# 重啟tomcat
function restart(){
    # 關(guān)閉已啟動(dòng)程序
    killall -9 java
    # 啟動(dòng)服務(wù)
    ${TOM_URL}/bin/startup.sh
    # 輸入啟動(dòng)日志
    tail -f ${TOM_URL}/logs/catalina.out
}

# 指令處理
while getopts ":yprcwlh" optname
do
    case "$optname" in
    "y")
        echo "更新jar包"

        mvn clean install -U -P${DEV} -DskipTests
        newwar
        restart
        ;;
    "p")
        echo "重新打包"

        mvn clean package -P${DEV} -DskipTests

        newwar
        restart
        ;;
    "r")
        echo "重啟tomcat"

        restart
        ;;
    "c")
        echo "重新編譯并重啟服務(wù)"

        mvn clean compile -P${DEV} -DskipTests
        cp -R ${WC_JAVA}
        restart
        ;;
    "w")
        echo "開始監(jiān)聽vm文件"

        # 監(jiān)聽 VM
        watch -n ${WT} cp -R ${WC_VM}
        ;;
    "l")
        echo "日志"

        # 監(jiān)聽 VM
        tail -f ${TOM_URL}/logs/catalina.out
        ;;
    "h")

        echo " -y 更新maven包-編譯-打包-發(fā)布-啟動(dòng)一條龍服務(wù)"
        echo " -p 編譯打包發(fā)布啟動(dòng)一條龍服務(wù)"
        echo " -r 重啟tomcat"
        echo " -c 重新java文件并部署重啟服務(wù)"
        echo " -w 監(jiān)聽vm文件,默認(rèn)5S同步一次"
        echo " -l 查看日志"
        echo " -h 幫助"
        ;;
    esac
推廣到團(tuán)隊(duì)

經(jīng)過上面三步,我們的工具已經(jīng)建好了,但是怎么讓其他人也能使用起來(lái)呢?

docker 提供了云服務(wù),如果我們的鏡像足夠小就可以將鏡像推送到云上供團(tuán)隊(duì)其他人下載運(yùn)行,但是我們的鏡像已經(jīng)超過了1G。。。所以我們就不能使用這種方式了。

docker save java -o ./java.tar

使用上面的命令可以將鏡像持久化到本地文件 java.tar,然后通過其他手段進(jìn)行傳輸?shù)狡渌瑢W(xué)的機(jī)器上,我們使用AirDrop,幾分鐘的事情。

docker load -i java.tar

其他同學(xué)可以通過這個(gè)命令將我們的鏡像加載到他的docker中。

再將shell腳本集成到項(xiàng)目根目錄中,就可以愉快的使用了。

感謝

特別感謝我司 @董珂 @海峰 @賓哥 幾位同學(xué)提供的幫助!謝謝。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/65119.html

相關(guān)文章

  • 使用 Docker 搭建前端 Java 開發(fā)環(huán)境

    摘要:解決的痛點(diǎn)免搭建后端開發(fā)環(huán)境。開發(fā)環(huán)境改變只需要改變鏡像就能同步更新。啟動(dòng)這個(gè)新建的鏡像。 這篇文章是為了解決前后端開發(fā)沒有徹底分離的坑,因?yàn)槲宜居玫氖莏ava,入職第一天就是搭建本地開發(fā)環(huán)境,看見了多年不見的eclipse的圖標(biāo)出現(xiàn)我的電腦上,我是難過的。后來(lái)知道并不是我一個(gè)人有此感受。依稀記得有個(gè)同學(xué)整整一天項(xiàng)目都沒跑起來(lái)的崩潰感。為了解決這個(gè)問題我們嘗試了很多方案,但是大大小小都...

    go4it 評(píng)論0 收藏0
  • 使用 Docker 搭建前端 Java 開發(fā)環(huán)境

    摘要:解決的痛點(diǎn)免搭建后端開發(fā)環(huán)境。開發(fā)環(huán)境改變只需要改變鏡像就能同步更新。啟動(dòng)這個(gè)新建的鏡像。 這篇文章是為了解決前后端開發(fā)沒有徹底分離的坑,因?yàn)槲宜居玫氖莏ava,入職第一天就是搭建本地開發(fā)環(huán)境,看見了多年不見的eclipse的圖標(biāo)出現(xiàn)我的電腦上,我是難過的。后來(lái)知道并不是我一個(gè)人有此感受。依稀記得有個(gè)同學(xué)整整一天項(xiàng)目都沒跑起來(lái)的崩潰感。為了解決這個(gè)問題我們嘗試了很多方案,但是大大小小都...

    dreamGong 評(píng)論0 收藏0
  • 基于docker搭建前端環(huán)境

    摘要:前言又是一年畢業(yè)季見某大學(xué)生苦苦掙扎于搭建環(huán)境而不能享受開發(fā)的樂趣于心不忍特作此文。 前言 ????又是一年畢業(yè)季,見某大學(xué)生苦苦掙扎于搭建node環(huán)境而不能享受開發(fā)的樂趣,于心不忍.特作此文。此前已有一文,用 Docker 快速配置前端開發(fā)環(huán)境????而不同之處,本文會(huì)以step by step的形式幫助裝機(jī)工完成一次搭建,到處復(fù)制:) ????本文旨在于為擺脫搭建開發(fā)環(huán)境的重復(fù)勞動(dòng)...

    jay_tian 評(píng)論0 收藏0
  • 基于docker搭建前端環(huán)境

    摘要:前言又是一年畢業(yè)季見某大學(xué)生苦苦掙扎于搭建環(huán)境而不能享受開發(fā)的樂趣于心不忍特作此文。 前言 ????又是一年畢業(yè)季,見某大學(xué)生苦苦掙扎于搭建node環(huán)境而不能享受開發(fā)的樂趣,于心不忍.特作此文。此前已有一文,用 Docker 快速配置前端開發(fā)環(huán)境????而不同之處,本文會(huì)以step by step的形式幫助裝機(jī)工完成一次搭建,到處復(fù)制:) ????本文旨在于為擺脫搭建開發(fā)環(huán)境的重復(fù)勞動(dòng)...

    Cristalven 評(píng)論0 收藏0
  • 前端開發(fā)者的 Docker 之旅

    摘要:毫不夸張的說,前端的演化歷史和成功,是工程師不斷突破桎梏邁向本我的探索旅程。前端是由什么語(yǔ)言組成的前端開發(fā)技術(shù),從狹義的定義來(lái)看,是指圍繞這樣一套體系的開發(fā)技術(shù),它的運(yùn)行宿主是瀏覽器。 showImg(http://7xi8kv.com5.z0.glb.qiniucdn.com/dalibao.jpg); 「Docker 開發(fā)大禮包」已經(jīng)到了第三季。 「JavaScript:世界上最被...

    GitCafe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<