濟(jì)寧建站公司seo文章代寫(xiě)一篇多少錢(qián)
使用docker、docker-compose部署微服務(wù)
- 一、使用docker部署
- 1、準(zhǔn)備
- 2、上傳jar包
- 3、編寫(xiě)dockerfile文件
- 3、構(gòu)建鏡像和容器
- 二、使用docker-compose部署
- 1、準(zhǔn)備服務(wù)的jar包和dockerfile文件
- 2、編寫(xiě)docker-compose.yml文件
- 3、docker-compose常用命令
- (1)、前臺(tái)創(chuàng)建鏡像并啟動(dòng)容器
- (2)、后臺(tái)創(chuàng)建鏡像并啟動(dòng)容器
- (3)、查看啟動(dòng)的容器
- 4、停止服務(wù)(含刪除)
- 5、啟動(dòng)服務(wù)容器
- 6、關(guān)閉服務(wù)容器
- 7、重啟服務(wù)容器
一、使用docker部署
1、準(zhǔn)備
這里已經(jīng)在docker安裝并啟動(dòng)好了Redis、nacos,配置好了“ruoyi-gateway-prod.yml”文件。
注意如果配置文件中有Redis、MySQL、nacos這些的連接信息,需要把IP地址改為服務(wù)器的公網(wǎng)地址或者內(nèi)網(wǎng)地址,不會(huì)連接不到。
2、上傳jar包
我這里以微服務(wù)版若依的網(wǎng)關(guān)服務(wù)為例,上傳到指定目錄。
3、編寫(xiě)dockerfile文件
官方文檔:
https://docs.docker.com/engine/reference/builder/
英文的看起來(lái)有些吃力,若依這里有中文的教程
這是若依的文檔地址:
http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#dockerfile
先獲取構(gòu)建鏡像所需要的基礎(chǔ)鏡像,也就是jdk鏡像,先看看有哪些jdk鏡像
docker search openjdk
這里獲取的是jdk8的鏡像
docker pull openjdk:8-jre
我之前獲取過(guò),第一次獲取可能慢一點(diǎn)。
再創(chuàng)建一個(gè)名為dockerfile的文件,文件名可以自定義,一般都為dockerfile,內(nèi)容如下:
# 基礎(chǔ)鏡像
FROM openjdk:8-jre
# author
LABEL author="gan"# 創(chuàng)建目錄
RUN mkdir -p /home/jar
# 指定路徑,后面運(yùn)行的jar包就是在這個(gè)目錄
WORKDIR /home/jar
# 掛載目錄
VOLUME /home/jar# 復(fù)制jar文件到路徑,第一個(gè)是宿主機(jī)文件目錄(dockerfile所在目錄,不能是絕對(duì)路徑),第二個(gè)是容器文件目錄
COPY ./ruoyi-gateway.jar /home/jar/ruoyi-gateway.jar# 啟動(dòng)網(wǎng)關(guān)服務(wù)jar包
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-gateway.jar"]
上傳到和jar包同一目錄
假如要復(fù)制多個(gè)文件到容器,可以這樣
3、構(gòu)建鏡像和容器
在當(dāng)前目錄下構(gòu)建鏡像,注意后面的“.”不是多余的,命令如下:
docker build -f /www/wwwroot/changjing/jar/gateway/dockerfile -t ruoyi-gateway .
解釋:
-f:后面接的是 dockerfile 文件的路徑
-t:為構(gòu)建的鏡像打上標(biāo)簽,就是構(gòu)建的鏡像名稱
注意:
執(zhí)行構(gòu)建鏡像的命令要在dockerfile文件所在目錄,因?yàn)閐ockerfile文件的“COPY” 命令只能在相對(duì)于dockerfile文件的相對(duì)目錄,使用宿主機(jī)的絕對(duì)目錄構(gòu)建會(huì)報(bào)錯(cuò)。
執(zhí)行結(jié)果如下:
構(gòu)建成功,因?yàn)槲仪懊嬉呀?jīng)構(gòu)建成功過(guò)了,可能會(huì)和第一次構(gòu)建不太一樣。
接下來(lái)啟動(dòng)鏡像,命令如下:
docker run -d --name ruoyi-gateway -p 8010:8010 ruoyi-gateway
解釋:
–name:后面接的是容器名稱,我這里和鏡像名稱一樣
-p:后面接的是宿主機(jī)和容器的端口映射,“:”前為服務(wù)器端口,“:”后為seata容器端口
最后面的是鏡像名稱
可以看到容器已經(jīng)跑起來(lái)了。
二、使用docker-compose部署
使用docker-compose部署服務(wù)是使用docker部署基礎(chǔ)上,增加docker-compose.yml文件統(tǒng)一管理服務(wù)容器,實(shí)現(xiàn)一個(gè)命令啟動(dòng)或關(guān)閉所有服務(wù)容器,所以要使用docker-compose部署,還是得先學(xué)會(huì)使用docker部署,是一種前期麻煩后期舒服的部署方式。
若依也有相關(guān)的教程:
http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#docker-compose
1、準(zhǔn)備服務(wù)的jar包和dockerfile文件
在保留前面若依的gateway的jar包和dockerfile文件基礎(chǔ)上,增加auth的jar包和dockerfile文件,auth的dockerfile跟gateway大同小異,具體如下:
# 基礎(chǔ)鏡像
FROM openjdk:8-jre
# author
LABEL author="gan"# 創(chuàng)建目錄
RUN mkdir -p /home/jar
# 指定路徑
WORKDIR /home/jar
# 掛載目錄
VOLUME /home/jar# 復(fù)制jar文件到路徑,第一個(gè)是宿主機(jī)文件目錄(dockerfile所在目錄,不能是絕對(duì)路徑),第二個(gè)是容器文件目錄
COPY ./ruoyi-auth.jar /home/jar/ruoyi-auth.jar
# 啟動(dòng)系統(tǒng)服務(wù)
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-auth.jar"]
上傳到指定的文件夾
2、編寫(xiě)docker-compose.yml文件
官網(wǎng)上docker-compose.yml文件對(duì)應(yīng)的docker版本
這是我的docker版本:
所以我的docker-compose.yml的文件版本是3.8。
文件中只有g(shù)ateway和auth相關(guān)的內(nèi)容,具體如下:
# 描述 Compose 文件的版本信息
version : '3.8'# 定義服務(wù),可以多個(gè),每個(gè)服務(wù)中定義了創(chuàng)建容器時(shí)所需的鏡像、參數(shù)、依賴等
services:ruoyi-gateway: # 服務(wù)名稱,跟構(gòu)建鏡像名稱有關(guān),假如image值為空,那么生成的鏡像名稱為“docker-compose.yml文件所在目錄名稱_ruoyi-gateway”,我放在jar目錄,生成的鏡像名稱就是jar_ruoyi-gatewayimage: ruoyi-gateway # 構(gòu)建鏡像名稱container_name: ruoyi-gateway # 容器名稱build:context: ./gateway # 構(gòu)建鏡像的jar包和dockerfile文件所在的目錄(相對(duì)于docker-compose.yml文件,我這里gateway目錄是跟docker-compose.yml文件同一目錄)dockerfile: dockerfile # 構(gòu)建網(wǎng)關(guān)鏡像的文件名稱ports:- "8010:8010" # 構(gòu)建容器端口號(hào),“:”前為宿主機(jī)端口,“:”后為容器端口ruoyi-auth:image: ruoyi-authcontainer_name: ruoyi-authbuild:context: ./authdockerfile: dockerfileports:- "9200:9200"
文件寫(xiě)好后上傳到指定目錄
3、docker-compose常用命令
(1)、前臺(tái)創(chuàng)建鏡像并啟動(dòng)容器
類似使用 java -jar 命令啟動(dòng)jar包,注意要在docker-compose.yml文件所在目錄執(zhí)行,命令如下:
docker-compose up
窗口一旦關(guān)閉服務(wù)就停止了,初次啟動(dòng)服務(wù)的時(shí)候可以使用,最左邊是服務(wù)名稱,如果每個(gè)服務(wù)都沒(méi)有看到日志報(bào)錯(cuò)就代表啟動(dòng)成功了。
Ctrl+C退出,但即使關(guān)閉了,創(chuàng)建的鏡像和容器還存在
(2)、后臺(tái)創(chuàng)建鏡像并啟動(dòng)容器
也要在docker-compose.yml文件所在目錄執(zhí)行,命令如下:
docker-compose up -d
也可以指定docker-compose.yml文件的路徑,命令如下:
docker-compose -f /www/wwwroot/changjing/jar/docker-compose.yml up -d
執(zhí)行不會(huì)打印每個(gè)服務(wù)啟動(dòng)的日志,需要查看日志可以使用如下命令進(jìn)行查看
docker-compose logs
如果只想看ruoyi-auth服務(wù)的日志,可以使用如下命令
docker-compose logs ruoyi-auth
(3)、查看啟動(dòng)的容器
可以查看docker-compose.yml文件啟動(dòng)的所有容器,命令如下:
docker-compose ps
也可以指定服務(wù)名稱,比如執(zhí)行看ruoyi-auth有沒(méi)有啟動(dòng),命令如下:
docker-compose ps ruoyi-auth
注意只能在docker-compose.yml文件所在目錄執(zhí)行,在其他目錄執(zhí)行會(huì)報(bào)錯(cuò)
4、停止服務(wù)(含刪除)
停止并刪除所有服務(wù)的容器,不刪除鏡像,命令如下:
docker-compose down
可以看到鏡像還在,但對(duì)應(yīng)的容器被刪除了。
查看服務(wù)容器所對(duì)應(yīng)的鏡像,命令如下:
docker-compose images
停止并刪除工程中所有服務(wù)的容器、網(wǎng)絡(luò)、鏡像,命令如下:
docker-compose down --rmi all
如果重新上傳了jar包就可以使用這個(gè)方式停止。
5、啟動(dòng)服務(wù)容器
啟動(dòng)工程中所有服務(wù)的容器,命令如下:
docker-compose start
也可以在上面命令的基礎(chǔ)上加上容器名稱,啟動(dòng)指定的容器,比如我只啟動(dòng)gateway容器,命令如下:
docker-compose start ruoyi-gateway
6、關(guān)閉服務(wù)容器
關(guān)閉工程中所有服務(wù)的容器,命令如下:
docker-compose stop
也可以在上面命令的基礎(chǔ)上加上容器名稱,關(guān)閉指定的容器,比如我只關(guān)閉auth容器,命令如下:
docker-compose stop ruoyi-auth
7、重啟服務(wù)容器
重啟工程中所有服務(wù)的容器,命令如下:
docker-compose restart
也可以在上面命令的基礎(chǔ)上加上容器名稱,重啟指定的容器,比如我只重啟auth容器,命令如下:
docker-compose restart ruoyi-auth