需求
很多人還沒(méi)用過(guò)docker糯耍,或者說(shuō)還沒(méi)用docker安裝過(guò)項(xiàng)目扔字,今天我?guī)Т蠹沂褂胐ocker安裝一個(gè)開(kāi)源項(xiàng)目renren-fast囊嘉,包括它的前端與后端。這中間我們需要安裝一些需要的資源革为,比如redis扭粱、mysql、nginx等
我們先來(lái)看下renrne-fast的git倉(cāng)庫(kù):
renren-fast:https://gitee.com/renrenio/renren-fast
renren-fast-vue:https://gitee.com/renrenio/renren-fast-vue
所以renren-fast是個(gè)前后端分離的項(xiàng)目震檩。下面我們就開(kāi)始啦琢蛤,坐好小板凳哈。
簡(jiǎn)介
Docker是一個(gè)開(kāi)源的容器引擎抛虏,它有助于更快地交付應(yīng)用博其。Docker可將應(yīng)用程序和基礎(chǔ)設(shè)施 層隔離,并且能將基礎(chǔ)設(shè)施當(dāng)作程序一樣進(jìn)行管理迂猴。使用 Docker可更快地打包慕淡、測(cè)試以及部 署應(yīng)用程序,并可以縮短從編寫(xiě)到部署運(yùn)行代碼的周期沸毁。
重要資源
dockerhub(https://hub.docker.com/)
鏡像倉(cāng)庫(kù)峰髓,存放著 Docker 及其組件的所有資源,作用類(lèi)GitHub
Harbor(https://github.com/goharbor/harbor/releases)
docker私服息尺,可搭建搭建本地倉(cāng)庫(kù)
基本命令
兩種方式安裝docker
#安裝
wget -qO- https://get.docker.com | sh
#或者:
yum install docker
#檢查是否安裝成功
docker version
啟動(dòng)與重啟
# 啟動(dòng)docker
systemctl start docker
# 重啟
service docker rest
切換鏡像源
就像maven鏡像切換成aliyun的一樣儿普,國(guó)外的鏡像拉取很慢,所以最好切換成國(guó)內(nèi)的
#換鏡像源:
sudo vim /etc/docker/daemon.json
內(nèi)容如下:
{
"registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"]
}
#修改保存后掷倔,重啟 Docker 以使配置生效眉孩。
sudo service docker restart
其他命令
#搜索鏡像
docker search java
#拉取鏡像
docker pull java:8
#刪除鏡像
docker rmi java:8
#列出容器
docker? ps
#停止容器
docker stop {id}
進(jìn)入容器
docker exec -it f0b1c8ab3633 /bin/bash
#刪除容器(該命令只能刪除已停止的容器,如需刪除正在運(yùn)行的容器勒葱,可使用-f參數(shù))
docker rm f0b
總結(jié)過(guò)程
第一步浪汪、先安裝docker、檢查docker是否安裝成功 第二步凛虽、切換docker的鏡像源 第三步死遭、啟動(dòng)docker 第四步、可以嘗試一下命令集合:
docker search java
docker pull java:8
docker rmi java:8
ok凯旋,完成了上面的步驟之后我們基本對(duì)docker的命令有點(diǎn)了解了呀潭,接下來(lái)我們?nèi)グ惭b一下對(duì)應(yīng)的環(huán)境。
安裝環(huán)境
需要安裝什么中間件至非,我們可以上dockerhub上去搜索钠署,然后選擇一個(gè)自己想要的版本進(jìn)行下載,所有dockerhub一定要學(xué)會(huì)用荒椭,并且一般搜索詳情頁(yè)面一般都會(huì)給出對(duì)應(yīng)的中間件的安裝方式和一些參數(shù)說(shuō)明谐鼎。
那么接下來(lái)我們依次安裝一下redis、mysql趣惠、nginx狸棍、還有jdk
安裝redis
首先上dockerHub搜索redis身害,點(diǎn)擊進(jìn)入詳情頁(yè)之后,拉到下面就可以看到how to use草戈,如果需要選擇特定的版本塌鸯,有Supported tags給我們選擇,然后如果拉取最新的版本的話(huà)唐片,拉倒下面就教程丙猬。
https://hub.docker.com/_/redis
#拉取redis的鏡像
docker pull redis
#查看本地redis鏡像
docker images
#運(yùn)行redis(公眾號(hào)關(guān)注:java程序媛之家)
docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes
docker run表示運(yùn)行的意思
--name myredis 表示起個(gè)名字叫myredis
-p 6379:6379表示把服務(wù)器的6379映射到docker的6379端口,這樣就可以通過(guò)服務(wù)器的端口訪(fǎng)問(wèn)docker的端口
-d 表示以后臺(tái)服務(wù)形式運(yùn)行redis
redis redis-server --appendonly yes表示開(kāi)啟持久化緩存模式牵触,可以存到硬盤(pán)
安裝mysql
https://hub.docker.com/_/mysql
MYSQLROOTPASSWORD=admin表示root的初始密碼 mysql:5.7.27表示操作的是mysql的5.7.27版本,沒(méi)有后面的版本號(hào)的話(huà)咐低,默認(rèn)是拉取最新版本的mysql揽思。
docker pull mysql:5.7.27
docker run --name mymysql -e MYSQL_ROOT_PASSWORD=admin -d -p 3306:3306? mysql:5.7.27
連上mysql,創(chuàng)建數(shù)據(jù)庫(kù)renren_fast见擦,然后把renren-fast的腳本導(dǎo)入進(jìn)去钉汗。腳本位置:https://gitee.com/renrenio/renren-fast/blob/master/db/mysql.sql
安裝jdk
然后我們拉取一下jdk的環(huán)境,因?yàn)閞enren-fast是個(gè)springboot項(xiàng)目鲤屡,所以我們先提前準(zhǔn)備好java環(huán)境损痰,這樣構(gòu)建renren-fast項(xiàng)目的時(shí)候就不再需要去遠(yuǎn)程的倉(cāng)庫(kù)下載,可以提高項(xiàng)目的構(gòu)建速度酒来。
只有一行命令卢未,執(zhí)行完就可以。
#拉群jdk8
docker pull java:8
#查看本地鏡像
docker images
打包運(yùn)行項(xiàng)目
接下來(lái)堰汉,我們需要先去clone renren-fast項(xiàng)目辽社,對(duì)項(xiàng)目進(jìn)行打包成jar包。
mvn clean package
然后把項(xiàng)目renren-fast.jar包上傳到服務(wù)器中
在jar包同目錄下新建文件:Dockerfile
https://gitee.com/renrenio/renren-fast/blob/master/Dockerfile
vim Dockerfile
#內(nèi)容如下:
FROM java:8
EXPOSE 8080
VOLUME /tmp
ADD renren-fast.jar? /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
參數(shù)說(shuō)明一下:
FROM java:8 表示基于jdk8環(huán)境 EXPOSE 8080 表示對(duì)外暴露的端口是8080
VOLUME /tmp 表示掛載到/tmp目錄 ADD renren-fast.jar /app.jar 表示把jar包復(fù)制到鏡像服務(wù)里面的根目錄翘鸭,并改名稱(chēng)app.jar RUN bash -c 'touch /app.jar' 表示執(zhí)行創(chuàng)建app.jar ENTRYPOINT ["java","-jar","/app.jar"] 表示執(zhí)行啟動(dòng)命令java -jar
所以上面的Dockerfile就是構(gòu)建docker鏡像的關(guān)鍵文件滴铅,然后在這個(gè)目錄下執(zhí)行構(gòu)建命令:
#構(gòu)建renren鏡像,:0.0.1表示版本號(hào)就乓,后面的的.表示當(dāng)前目錄
docker build -t renren:0.0.1 .
#構(gòu)建完成之后啟動(dòng)項(xiàng)目
docker run -p 8080:8080 renren:0.0.1
ok汉匙,然后我們就可以看到項(xiàng)目啟動(dòng)輸出的日志的了其實(shí)。那平時(shí)要去哪看項(xiàng)目的日志呢生蚁?查看運(yùn)行的容器日志:?
docker logs -f -t --tail 行數(shù) 容器名
ok噩翠,致此,后端的服務(wù)已經(jīng)完全構(gòu)建完成邦投,我們可以通過(guò)8080端口訪(fǎng)問(wèn)到我們的后端服務(wù)了绎秒。接下來(lái)我們?nèi)ジ闱岸朔?wù)。
前端是vue尼摹,所以就打包然后放到nginx里面就好见芹。
安裝nginx
首先拉取nginx鏡像
docker pull nginx
然后啟動(dòng)剂娄,一些文件夾進(jìn)行掛載
docker run -d -p 80:80? -v ~/nginx/www:/usr/share/nginx/html nginx
-v ~/nginx/www:/usr/share/nginx/html表示掛載,把docker內(nèi)服務(wù)的/usr/share/nginx/html掛載到我當(dāng)前服務(wù)器的~/nginx/www目錄玄呛,所以我們?cè)趡/nginx/www放靜態(tài)文件相當(dāng)于在docker里的/usr/share/nginx/html放文件阅懦。
所以我們打包之后的文件都要上傳到~/nginx/www目錄。
打包前端
打開(kāi)renren-fast-vue文件夾徘铝,打開(kāi)cmd命令行耳胎,然后運(yùn)行命令。
由于前端使用vue開(kāi)發(fā)惕它,因此需要安裝node.js環(huán)境怕午。node.js安裝教程:http://nodejs.cn/download/?下載msi版本安裝。
安裝之后淹魄,命令行窗口郁惜,表示安裝成功。
然后啟動(dòng)安裝
# 安裝淘寶的鏡像命令
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 安裝依賴(lài)
cnpm instal
# 打包項(xiàng)目
npm run build
然后你就可以在項(xiàng)目根目錄下找到自動(dòng)生成一個(gè)dist文件夾甲锡,上傳到linux的~/nginx/www目錄下兆蕉。
打開(kāi)服務(wù)器的ip地址加/dist/index.html首頁(yè)
http://192.168.1.102/dist/index.html
如果遇到了403,這是權(quán)限問(wèn)題缤沦,運(yùn)行一下命令:
chcon -Rt svirt_sandbox_file_t ~/nginx/www
再次訪(fǎng)問(wèn)虎韵,運(yùn)行成功!
總結(jié)
好啦缸废,今天的文章先到這里了包蓝,有問(wèn)題,我們留言區(qū)見(jiàn)~~~
-END-
看完本文有收獲企量?請(qǐng)轉(zhuǎn)發(fā)分享給更多人
關(guān)注「java程序媛之家」养晋,提升Java技能
【推薦閱讀】
34張深夜監(jiān)控照,撕開(kāi)了上億成年人的偽裝
可能是全網(wǎng)最好的MySQL重要知識(shí)點(diǎn)
女生這樣子對(duì)你梁钾,100%把你當(dāng)備胎了
導(dǎo)圖梳理springboot手動(dòng)绳泉、自動(dòng)裝配,讓springboot不再難懂