首先:啟動上節(jié)使用的兩臺服務器(啟動docker和啟動游戲)
然后:導入上一節(jié)的springcloud案例項目 a-parent-project
開始這節(jié)的總結啦啦啦~~~
1.1 maven Docker 插件構建 Docker 鏡像入門Maven是一個強大的項目管理與構建工具??梢允褂肕aven構建Docker鏡像,那么我們的工作能得到進一步的簡化。
第一步:修改項目
EurekaServer01
的pom.xml
com.spotify docker-maven-plugin 0.4.13 zql/microservice-discovery-eureka:0.0.1 java:8["java", "-jar", "/${project.build.finalName}.jar"] / ${project.build.directory} ${project.build.finalName}.jar
也可以下載 插件地址
第二步:在linux宿主機的
/usr/local
下面創(chuàng)建java-project
,并且把項目文件(如下圖,父項目下的所有)上傳到linux宿主機目錄/usr/local/java-project
,如下:
步驟一:
步驟二:項目路徑查看:
步驟三:
步驟四:
第三步:下載并上傳 jdk、maven 的安裝包到linux服務器
- jdk-8u131-linux-x64.tar.gz
- apache-maven-3.6.0-bin.tar.gz
解壓并重命名:
第四步:安裝jdk
tar xvf jdk-8u131-linux-x64.tar.gz -C /usr/local/
cd /usr/local
mv jdk1.8.0_131 jdk
vi /etc/profile
#在最后添加
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
#重新加載配置文件
source /etc/profile
#測試jdk是否安裝成
java -version
第五步:安裝maven
tar xvf apache-maven-3.6.0-bin.tar.gz -C /usr/local/
cd /usr/local
mv apache-maven-3.6.0 maven
vi /etc/profile
#在最后添加
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
#重新加載配置文件
source /etc/profile
#測試maven安裝
mvn -v
解壓縮:
解壓并重命名:
拷貝maven目錄,方便下面使用:
添加配置文件和驗證是否成功安裝
配置maven加速器,我使用了華為的
編輯配置加速器
huaweicloud * https://mirrors.huaweicloud.com/repository/maven/
然后刷新項目
第六步:編譯構建項目
切換到測試JAVA項目目錄
cd /usr/local/EurekaServer
執(zhí)行編譯指令:
mvn clean package docker:build #這個命令不行就執(zhí)行下面一個,都一樣
mvn clean -Dmaven.test.skip=true package docker:build
我們會發(fā)現(xiàn)終端輸出類似于如下的內容:
第七步:查看鏡像
執(zhí)行命令:
docker images
第八步:使用鏡像創(chuàng)建運行容器
docker run -di --name e1 -p 10086:10086 zql/microservice-discovery-eureka:0.0.1
查看日志
docker logs e1
1.2 maven Docker 插件構建 Docker 鏡像,自定義 DockerFile第九步:訪問測試
http://192.168.188.181:10086/
上面的示例,我們直接在pom.xml中設置了一些構建的參數(shù)。很多場景下,我們希望使用Dockerfile更精確、有可讀性地構建鏡像。
下面我們帶領大家看一下如何使用Dockerfile基于Maven插件構建鏡像。
第一步:首先我們在項目的
src/main/docker
目錄下,新建一個Dockerfile文件
在idea中新建文件,文件出現(xiàn)問號,打不開解決
# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
ADD EurekaServer01-1.0.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
# 配置容器啟動后執(zhí)行的命令
CMD ["java","-jar","/app.jar"]
第二步:修改pom.xml,修改maven Docker插件,變動地方看下截圖
org.springframework.boot spring-boot-maven-plugin com.spotify docker-maven-plugin 0.4.13 zql/microservice-discovery-eureka:0.0.1 ${project.basedir}/src/main/docker / ${project.build.directory} ${project.build.finalName}.jar
刪除之前構建的一些容器和鏡像
第三步:上傳到linux服務器重新執(zhí)行編譯構建,即可根據(jù)Dockerfile生成鏡像
切換到測試JAVA項目目錄
cd /usr/local/EurekaServer01
執(zhí)行編譯構建指令:
mvn clean package docker:build #這個命令不行就執(zhí)行下面一個,都一樣
mvn clean -Dmaven.test.skip=true package docker:build
構建出現(xiàn)問題解決
瀏覽器進一步驗證:http://192.168.188.181:10086/
前文我們使用docker push 命令實現(xiàn)了鏡像的推送,我們也可使用Maven插件推送鏡像。我們不妨使用Maven插件推送一個Docker鏡像到Docker 私有倉庫。
第一步:修改Maven的全局配置文件setttings.xml
- 在其中添加以下內容,配置Docker私有倉庫的用戶信息。
cd /usr/local/maven/conf/
vi settings.xml
docker-hub admin admin123 wmsspark@163.com
第二步:修改項目EurekaServer01的pom.xml
com.spotify docker-maven-plugin 0.4.13 192.168.188.181:8086/microservice-discovery-eureka:0.0.2 ${project.basedir}/src/main/docker / ${project.build.directory} ${project.build.finalName}.jar docker-hub
serverId:必須和maven配置文件設置的server 節(jié)點的id一致
- idea中做了更改后再次需要上傳
第三步:執(zhí)行以下命令,添加pushImage的標識,表示推送鏡像
- 先將上面構建的容器和鏡像都刪掉
mvn clean -DpushImage package docker:build #這個命令不行就執(zhí)行下面一個,都一樣
mvn clean -Dmaven.test.skip=true -DpushImage package docker:build
這里已經顯示推送成功了,繼續(xù)下面游戲驗證:
執(zhí)行完畢,查看Docker游戲已經上傳成功鏡像:http://192.168.188.182:8081/
按照項目EurekaServer01的配置方式把相關項目都發(fā)布成鏡像
序號 | 項目名稱 | 鏡像名稱 |
1 | EurekaServer01 | 192.168.188.138:8086/microservice-discovery-eureka:0.0.1 |
2 | ConfigServer001 | 192.168.188.138:8086/microservice-config-server:0.0.1 |
3 | ZuulGateWay | 192.168.188.138:8086/microservice-zuul-gateway:0.0.1 |
4 | UserProvdier01 | 192.168.188.138:8086/microservice-provdier-service:0.0.1 |
5 | UserWeb04 | 192.168.188.138:8086/microservice-user-web:0.0.1 |
注意:
- 因為
EurekaServer01
和EurekaServer02
只是端口和配置不同,沒必要單獨創(chuàng)建2個獨立鏡像,僅僅需要在Docker鏡像創(chuàng)建容器的時候傳遞相關參數(shù)即可。- 同理
ConfigServer001
、ConfigServer002
也公用一個鏡像。UserProvdier01
、UserProvdier02
也公用一個鏡像。
2.2 項目工程發(fā)布鏡像配置 2.2.1 項目 EurekaServer01
- 先打開idea修改如下操作:
步驟一、修改上面項目src/main下面創(chuàng)建的docker目錄下面的
Dockerfile
文件
# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
ADD EurekaServer01-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#啟動端口
ENV PORT=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]
#CMD ["java","-jar","/app.jar"]
2.2.2 創(chuàng)建docker網(wǎng)絡
- 而后刪除上面操作過的鏡像
先創(chuàng)建一個網(wǎng)絡
docker network create mynet #搭建一個網(wǎng)絡
docker network ls #查看網(wǎng)絡
- 因為上面配置做了修改,所以再次上傳
mvn clean package -DpushImage docker:build
分別構建Eureka1和Eureka2
docker run -di --name=eureka1 --network=mynet -e PORT="-Dserver.port=10086" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" -p 10086:10086 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
docker run -di --name=eureka2 --network=mynet -e PORT="-Dserver.port=10087" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka" -p 10087:10087 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
docker logs eureka1 #通過日志查看是否啟動
docker logs eureka2
命令詳細解釋如:
容器創(chuàng)建指令:
docker run #創(chuàng)建容器指令
-di # d守護式容器、i 運行容器
--name=eureka1 # 容器名稱
--network=mynet #容器加入用戶自定義網(wǎng)絡mynet
-e PORT="-Dserver.port=10086" #指定環(huán)境參數(shù)--Eureka注冊中心服務啟動監(jiān)聽端口
#指定環(huán)境參數(shù)--Eureka注冊中心地址(高可用架構)
-e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka"
-p 10086:10086 #容器端口號映射
192.168.188.138:8086/microservice-discovery-eureka:0.0.1 #鏡像名稱
瀏覽器驗證:http://192.168.188.181:10086/
http://192.168.188.181:10087/
步驟一、拷貝EurekaServer01目錄下的docker并且修改 Dokcerfile文件的下面部分即可
# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY ConfigServer001-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#啟動端口
ENV PORT=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]
步驟二、修改pom.xml,修改maven Docker插件(將上面EurekaServer01的相應plugin復制過來修改下面截圖小框就可以了
com.spotify docker-maven-plugin 0.4.13 192.168.188.182:8086/zql/microservice-config-server:0.0.1 ${project.basedir}/src/main/docker / ${project.build.directory} ${project.build.finalName}.jar docker-hub
步驟三:進而上傳到服務器即可
步驟四:執(zhí)行下列命令上傳到游戲
mvn clean package -DpushImage docker:build
docker run -di --name=config1 --network=mynet -e PORT="-Dserver.port=7001" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7001:7001 192.168.188.182:8086/zql/microservice-config-server:0.0.1
- 將來自己上傳github上的文件進行拉?。?/li>
瀏覽器輸入:http://192.168.188.181:7001/application.yml
- 再創(chuàng)建一個容器
docker run -di --name=config2 --network=mynet -e PORT="-Dserver.port=7002" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7002:7002 192.168.188.182:8086/zql/microservice-config-server:0.0.1
瀏覽器查看:http://192.168.188.181:10086/
至此一共創(chuàng)建了5個容器 7001重復了啊,不然就4個
再試試7002是否能拉取github項目http://192.168.188.181:7002/application.yml
docker run -di --name=db1 --network=mynet -p 3306:3306 -v /usr/local/mysqlconfig:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=springJpa mysql:5.7
驗證:
2.2.5 項目ZuulGateWay步驟一、拷貝EurekaServer01目錄下的docker并且修改 Dokcerfile文件的下面部分即可
# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY ZuulGateWay-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#啟動端口
ENV PORT=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]
步驟二、修改pom.xml,修改maven Docker插件
org.springframework.boot spring-boot-maven-plugin com.spotify docker-maven-plugin 0.4.13 192.168.188.182:8086/zql/microservice-zuul-gateway:0.0.1 ${project.basedir}/src/main/docker / ${project.build.directory} ${project.build.finalName}.jar docker-hub
步驟三:上傳項目服務器
步驟四:上傳推送到游戲
mvn clean -DpushImage package docker:build #這個命令不行就執(zhí)行下面一個,都一樣
mvn clean -Dmaven.test.skip=true -DpushImage package docker:build
2.2.6 項目UserProvdier01步驟五:驗證項目
步驟一、在項目根目錄創(chuàng)建docker目錄,創(chuàng)建Dockerfile文件
# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY UserProvdier01-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#監(jiān)聽端口
ENV PORT=""
#應用名稱,用來前端顯示用,不是serviceId
ENV APPLICATION=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA -jar /app.jar"]
步驟二、修改pom.xml,修改maven Docker插件
com.spotify docker-maven-plugin 0.4.13 192.168.188.138:8086/microservice-provdier-service:0.0.1 ${project.basedir}/docker / ${project.build.directory} ${project.build.finalName}.jar docker-hub
步驟三、bootstrap.yml配置文件內容
spring:
cloud:
config:
discovery:
enabled: true
service-id: CONFIG-SERVER
profile: dev
label: master
步驟四、項目在git存儲的配置文件
ProviderVersion: UserProvider0.0.1
spring:
datasource:
url: jdbc:mysql://db1:3306/springboot-005?serverTimezone=GMT%2B8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
application:
name: UserProvider
management:
endpoints:
web:
exposure:
include: refresh,health,info
2.2.7 項目 UserWeb06注意:配置文件級別 本地配置文件—》-D參數(shù)注入配置文件----》遠程配置中心配置文件,級別越來越高。
步驟一、拷貝EurekaServer01目錄下的docker并且修改 Dokcerfile文件的下面部分即可
# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY UserWeb06-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#監(jiān)聽端口
ENV PORT=""
#應用名稱
ENV APPLICATION=""
#注冊中心服務器地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA -jar /app.jar"]
步驟二、修改pom.xml,修改maven Docker插件
com.spotify docker-maven-plugin 0.4.13 192.168.188.182:8086/microservice-user-web:0.0.1 ${project.basedir}/docker / ${project.build.directory} ${project.build.finalName}.jar docker-hub
步驟三、bootstrap.yml配置文件內容
spring:
application:
name: UserWeb06
cloud:
config:
discovery:
enabled: true
service-id: CONFIG-SERVER
profile: dev
label: master
2.3 編譯工程創(chuàng)建鏡像(對上面的總結)步驟一、上傳項目EurekaServer01到Linux服務器目錄:/usr/local/springboot/EurekaServer01
步驟二、執(zhí)行編譯、打包、構建docker鏡像指令
進入當前項目目錄
cd /usr/local/springboot/EurekaServer01
編譯、打包、發(fā)布Docker鏡像指令:
mvn clean -Dmaven.test.skip=true -DpushImage package docker:build
查看鏡像:
docker images
步驟三、其他項目
其他項目ConfigServer001、ZuulGateWay、UserProvdier01、UserWeb06也和上面一樣,上傳,然后進入項目目錄執(zhí)行編譯、打包、構建Docker鏡像指令。
最終5個鏡像全部創(chuàng)建ok
在私有倉庫可以查看到鏡像
上面命令匯總:
#搭建網(wǎng)絡
docker network create mynet
#查看網(wǎng)絡
docker network ls
#創(chuàng)建eurka01鏡像
mvn clean package -DpushImage docker:build
docker run -di --name=eureka1 --network=mynet -e PORT="-Dserver.port=10086" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" -p 10086:10086 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
docker run -di --name=eureka2 --network=mynet -e PORT="-Dserver.port=10087" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka" -p 10087:10087 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
#創(chuàng)建ConfigServer001鏡像
mvn clean package -DpushImage docker:build
docker run -di --name=config1 --network=mynet -e PORT="-Dserver.port=7001" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7001:7001 192.168.188.182:8086/zql/microservice-config-server:0.0.1
docker run -di --name=config2 --network=mynet -e PORT="-Dserver.port=7002" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7002:7002 192.168.188.182:8086/zql/microservice-config-server:0.0.1
docker run -di --name=db1 --network=mynet -p 3306:3306 -v /usr/local/mysqlconfig:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=springJpa mysql:5.7
docker run -di --name=provider1 --network=mynet -e PORT="-Dserver.port=8001" -e APPLICATION="-Dspring.application.name=UserProvdier01" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 8001:8001 192.168.188.182:8086/zql/microservice-provdier-service:0.0.1
docker run -di --name=provider2 --network=mynet -e PORT="-Dserver.port=8002" -e APPLICATION="-Dspring.application.name=UserProvdier02" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 8002:8002 192.168.188.182:8086/zql/microservice-provdier-service:0.0.1
2.4 搭建實際運行項目一:項目架構圖
二:創(chuàng)建docker網(wǎng)絡
根據(jù)上面的架構圖,本次需要創(chuàng)建一個用戶自定義網(wǎng)絡(上面已經創(chuàng)建過了):
Docker指令:
docker network create mynet
查看docker網(wǎng)絡指令:
docker network ls
構建網(wǎng)絡成功后,所有加入到該用戶自定義網(wǎng)絡的容器即可通過容器名稱相互連接。
步驟三:創(chuàng)建運行docker容器
步驟四:查看docker容器輸出日志
通過指令:
docker logs -f -t --tail 10 provider1
就可以查看對應的容器日志輸出
步驟五:測試運行
訪問:http://192.168.188.138:9001
docker至此總結完畢???
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享文章:二十九、Docker(5)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://jinyejixie.com/article22/hgsjc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、關鍵詞優(yōu)化、手機網(wǎng)站建設、營銷型網(wǎng)站建設、外貿網(wǎng)站建設、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)