從零開始創(chuàng)建最簡單的springboot工程爬橡,到docker部署到云服務器

docker越來越流行,但之前pc和imac操作docker略顯繁瑣棒动,而docker桌面端的發(fā)布讓docker操作越來越簡單糙申,本文記錄從0開始搭建一個最簡單的springboot工程,直到通過打包上傳到云服務器全過程船惨。

概要

基本流程是:

創(chuàng)建springboot或spring cloud工程→打包成Jar→打包成dockerfile→上傳鏡像服務器(三方或自建)→云服務器拉取鏡像服務器→運行鏡像


基本流程.png

一柜裸,創(chuàng)建SpringBoot Web項目

1.1. 新建SpringBoot工程

使用默認名稱Demo,一路next


創(chuàng)建新工程.png
Spring官方快捷創(chuàng)建.png
選擇Spring Web.png

1.2. 配置Maven

1.2.1 查看maven是否正確

第一個菜單→Preferences→搜索Maven→選擇正確的配置文件地址和本地倉庫地址


界面配置Maven.png

2.2 修改配置文件

打開setting.xml,找到mirrors添加鏡像地址粱锐,修改配置文件為淘寶地址

<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

1.3. 刷新工程

右側打開maven管理頁面疙挺,點擊刷新

maven更新pom中jar包.png

如果pom.xml(根目錄)中沒有錯誤,則項目創(chuàng)建成功怜浅,如果出現(xiàn)紅色標注的錯誤铐然,則執(zhí)行下面操作:

1.3.1 檢查pom.xml錯誤

打開淘寶倉庫地址查詢artifactIdversion是否錯誤
淘寶maven倉庫查詢地址

查詢舉例蔬崩,按實際需求查詢.png

1.3.2 修改版本號

根據(jù)groupIdartifactId找到合適的版本號version搀暑,重填版本號沥阳,重新更新pom.xml文件直到無錯

1.4. 項目結構

項目結構.png

說明
application.properties是項目默認創(chuàng)建的,application.yml文件需要手動創(chuàng)建
可以混合使用但不推薦自点,application.yml更方便易讀桐罕,建議創(chuàng)建application.yml刪除application.properties

# 啟動端口,yaml文件書寫時會有提示
server:
  port: 8080

配置文件中什么都不填寫會默認啟動8080端口

1.5. 添加控制器

添加控制器DemoController桂敛,讓網(wǎng)站可以被訪問

/** 創(chuàng)建一個rest風格都控制器 */
@RestController
public class DemoController {
    /** 通過get方式訪問路徑http://127.0.0.1:8080/index */
    @GetMapping("/index")
    public String index(){
        return "springboot index page";
    }
}

1.6. 測試網(wǎng)站

1.6.1 運行

DemoApplication中右鍵Run...

1.6.2 測試

打開瀏覽器訪問127.0.0.1:8080/index功炮,出現(xiàn)springboot index page表示成功


二,在本地docker中運行

2.1. 下載

下載docker Desktop for mac或者docker Desktop for windows
官網(wǎng)下載
docker由于歷史原因有很多版本术唬,各個版本適應不同環(huán)境薪伏,最新的是安裝版,簡單易用粗仓,不過對系統(tǒng)有要求毅该,詳細內容可以看看這遍博客:
Docker學習筆記(1)——理清概念

2.2. 安裝

安裝版的docker按照說明直接按照即可,mac需要升級到最新系統(tǒng)潦牛,Windows需要支持虛擬化


docker desktop界面.png

Containers / Apps - 當前容器,可以控制容器運行與停止

要有Container首先要有Image挡育,也就是說Container是通過image創(chuàng)建的

images - 本地鏡像

Docker鏡像包括一個或者多個只讀層(read-only layers)巴碗,最多127層,相當于每個鏡像都自帶一個迷你操作系統(tǒng)即寒,原來只是打包Jar橡淆,Docker是連同運行環(huán)境一起打包了,保證任何地方運行環(huán)境是一致的

Volumes - 數(shù)據(jù)持久化

Docker的數(shù)據(jù)持久化即使數(shù)據(jù)不隨著container的結束而結束母赵,數(shù)據(jù)存在于host機器上——要么存在于host的某個指定目錄中(使用bind mount)逸爵,要么使用docker自己管理的volume(/var/lib/docker/volumes下)

Dev Environments - 開發(fā)環(huán)境

還不成熟,意思是團隊開始時互享鏡像凹嘲,原來需要上傳到Git然后隊友拉取代碼师倔,現(xiàn)在直接共享給隊友

2.3. 編寫dockerfile

FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER abc
ADD demoapp.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Dspring.profiles.active=online","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • dockerfile沒有后綴名
  • 手動打包:只需要Jar包和dockerfile文件在同一目錄即可,本文使用方法
  • idea打包:安裝docker插件后周蹭,在idea打包
  • FROM anapsix/alpine-java:8_server-jre_unlimited:指定基礎鏡像趋艘,alpine是精簡版linux鏡像,打包后體積會小很多凶朗,推薦
  • MAINTAINER abc: 維護者信息
  • ADD demoapp.jar app.jar:將本地文件添加到容器中瓷胧,本地demoapp.jar放到app.jar中
  • RUN bash -c 'touch /app.jar':構建鏡像時執(zhí)行的命令,修改這個文件的訪問時間和修改時間為當前時間
  • ENTRYPOINT ["java","-Dspring.profiles.active=online","-- Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]:配置容器棚愤,使其可執(zhí)行化搓萧,ENTRYPOINT可以執(zhí)行一些額外配置
  • 參考dockerfile詳解

2.4.打包成docker鏡像

docker build -t demo-alpine:latest .
  • -t ? 給鏡像加一個Tag
  • demo-alpine ? 給鏡像起的名稱
  • latest ? 給鏡像的Tag名,不寫自動添加latest
  • . -Dockerfile所在目錄必填

打開docker desktop軟件,發(fā)現(xiàn)鏡像已打包上去

docker desktop.png

2.5.運行鏡像

docker run -d -p 8080:8080 --name demo-alpine demo-alpine:latest
  • -d - 后臺運行容器瘸洛,并返回容器ID
  • -p - 指定端口映射揍移,格式為:主機(宿主)端口:容器端口
  • --name demo-alpine demo-alpine:latest - demo-alpine為運行容器名稱,demo-alpine:latest為images鏡像名:版本號tag
  • 更多參考 Docker run 命令

打開瀏覽器訪問127.0.0.1:8080/index货矮,出現(xiàn)springboot index page羊精,說明docker本地運行正確


三,上傳至鏡像庫

3.1. 阿里云容器鏡像服務

配置淘寶鏡像(docker hub官網(wǎng)如果使用比較通暢囚玫,可以不配置

開通阿里云賬號喧锦,按官網(wǎng)提示配置鏡像加速
淘寶鏡像服務

配置容器鏡像加速.png

開通鏡像倉庫

1). 開通


開通鏡像倉庫.png
  • 創(chuàng)建鏡像倉庫,注意選擇地區(qū)
  • 創(chuàng)建命名空間抓督,成功創(chuàng)建后點擊管理燃少,里面會有教程指導如何上傳鏡像
  • 設置訪問憑證,設置固定密碼铃在,上傳時需要先登陸

2). 登陸阿里云

docker login --username=您的登錄名@qq.com registry.cn-chengdu.aliyuncs.com

3). 將鏡像推送到阿里云Registry

docker tag [ImageId] registry.cn-chengdu.aliyuncs.com/cdsk/[命名空間]:[鏡像版本號]
docker push registry.cn-chengdu.aliyuncs.com/cdsk/[命名空間]:[鏡像版本號]
  • tag - 本地鏡像必須打tag才能上傳
  • [ImageId] - 本地鏡像名字
  • registry.cn-chengdu.aliyuncs.com/cdsk/[命名空間]:[鏡像版本號] - tag后的名字和版本阵具,在本地也會顯示,推送是推tag后的鏡像

imac第一次上傳時第一次輸入開機密碼定铜,第二次輸入訪問憑證固定密碼阳液,pc未測試

登陸阿里云容器鏡像服務,選擇正確的地區(qū)后可以看見上傳的鏡像

3.2. docker hub容器鏡像服務

  • docker官方的鏡像倉庫揣炕,原理和阿里云類似帘皿,但是穩(wěn)定性差,有時不能訪問
  • 官網(wǎng)創(chuàng)建倉庫畸陡,然后本地登陸后push上去即可

3.3. harbor 自建容器鏡像服務

  • Docker容器應用的開發(fā)和運行離不開可靠的鏡像管理鹰溜,雖然Docker官方也提供了公共的鏡像倉庫,但是從安全和效率等方面考慮丁恭,部署我們私有環(huán)境內的Registry也是非常必要的曹动。Harbor是由VMware公司開源的企業(yè)級的Docker Registry管理項目,它包括權限管理(RBAC)牲览、LDAP墓陈、日志審核、管理界面第献、自我注冊跛蛋、鏡像復制和中文支持等功能。
  • harbor部署較為復雜痊硕,以后會有專題補充

三種方式都可以上傳鏡像赊级,目的是被云服務器拉取鏡像,從開發(fā)??鏡像庫??云服務器岔绸,最終目的是構建一個持續(xù)集成開發(fā)環(huán)境


四理逊,云服務器中運行工程

  • 阿里云同理
  • 系統(tǒng)是centos 7
  • 安裝docker
  • 拉取鏡像
docker pull registry.cn-chengdu.aliyuncs.com/cdsk/[命名空間]:[鏡像版本號]
  • 運行鏡像
docker run -d -p 8080:8080 --name demo registry.cn-chengdu.aliyuncs.com/cdsk/[命名空間]:[鏡像版本號]
  • centos 7開放端口8080橡伞,外網(wǎng)登陸 外網(wǎng)ip地址:8080,成功訪問晋被,完畢撒花??

五兑徘,總結

  • 這是一個最簡單的docker服務部署教程
  • 正式的服務器一般是多臺服務器,需要安裝openVPN來限制任意登陸
  • 正式的服務器中docker使用k8s來集中管理
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末羡洛,一起剝皮案震驚了整個濱河市挂脑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欲侮,老刑警劉巖崭闲,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異威蕉,居然都是意外死亡刁俭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門韧涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牍戚,“玉大人,你說我怎么就攤上這事虑粥∪缧ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵娩贷,是天一觀的道長第晰。 經(jīng)常有香客問我,道長育勺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任罗岖,我火速辦了婚禮涧至,結果婚禮上,老公的妹妹穿的比我還像新娘桑包。我一直安慰自己南蓬,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布哑了。 她就那樣靜靜地躺著赘方,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弱左。 梳的紋絲不亂的頭發(fā)上窄陡,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音拆火,去河邊找鬼跳夭。 笑死涂圆,一個胖子當著我的面吹牛,可吹牛的內容都是我干的币叹。 我是一名探鬼主播润歉,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颈抚!你這毒婦竟也來了踩衩?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤贩汉,失蹤者是張志新(化名)和其女友劉穎驱富,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雾鬼,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡萌朱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了策菜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶疼。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖又憨,靈堂內的尸體忽然破棺而出翠霍,到底是詐尸還是另有隱情,我是刑警寧澤蠢莺,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布寒匙,位于F島的核電站,受9級特大地震影響躏将,放射性物質發(fā)生泄漏锄弱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一祸憋、第九天 我趴在偏房一處隱蔽的房頂上張望会宪。 院中可真熱鬧,春花似錦蚯窥、人聲如沸掸鹅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巍沙。三九已至,卻和暖如春荷鼠,著一層夾襖步出監(jiān)牢的瞬間句携,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工允乐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留务甥,地道東北人牡辽。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像敞临,于是被迫代替她去往敵國和親态辛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容