上一章只是完成了本機的docker服務(wù)陡厘,接下去需要完成其它環(huán)境的部署抽米。這里會完成測試服務(wù)器與生產(chǎn)服務(wù)器部署。
提交鏡像
要在各環(huán)境中部署項目糙置,首先要把鏡像提交到這些環(huán)境都能訪問的鏡像服務(wù)器中云茸。這里使用阿里云的鏡像服務(wù),供參考谤饭。
創(chuàng)建鏡像倉庫
點擊創(chuàng)建鏡像倉庫
代碼源選擇本地倉庫标捺,即不在云中查找源碼
點擊創(chuàng)建鏡像倉庫完成添加倉庫
點擊管理可以看到倉庫使用說明
提交鏡像
上一章只是基本體驗一下本地運行,下面先把上一章的容器與鏡像刪除,因為那個容器和鏡像已經(jīng)不用了,以免混淆撩穿。
先查看下當(dāng)前容器,用命令docker ps -a萍倡,-a表示列出所有容器,包括沒在運行的辟汰。
命令docker rm bhhello刪除名稱為bhhello的容器列敲,執(zhí)行后再查看容器列表阱佛。
查看當(dāng)前鏡像,用戶命令docker images
執(zhí)行命令docker rmi bhhello刪除鏡像
為了能把鏡像提交到阿里云鏡像倉庫戴而,需要先改下pom.xml文件中dockerfile-maven-plugin的配置凑术。把repository的值改成registry.cn-hangzhou.aliyuncs.com/biboheart/bhhello,與倉庫地址一致所意。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>bhparent</artifactId>
<groupId>com.biboheart.demos</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>bhhello</artifactId>
<name>bhhello</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<docker.aliyun.registry>registry.cn-hangzhou.aliyuncs.com</docker.aliyun.registry>
<docker.image.prefix>biboheart</docker.image.prefix>
<dockerfile.maven.version>1.4.10</dockerfile.maven.version>
</properties>
<dependencies>
...略...
</dependencies>
<build>
<plugins>
<!--Docker maven plugin-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile.maven.version}</version>
<configuration>
<repository>${docker.aliyun.registry}/${docker.image.prefix}/${project.artifactId}</repository>
<contextDirectory>./</contextDirectory>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
執(zhí)行命令mvn clean package dockerfile:build淮逊,打包項目后編譯dockerfile。成功后會生成一個image扶踊。這次生成的image與上次的有點區(qū)別泄鹏。
生成后與阿里云的地址比對下。如果地址一致就可以用push命令提交到阿里云的鏡像倉庫了秧耗。
接下去開始根據(jù)阿里云操作指南進行提交备籽。
-
docker login --username=[用戶名] registry.cn-hangzhou.aliyuncs.com
-
docker push registry.cn-hangzhou.aliyuncs.com/biboheart/bhhello:[鏡像版本號]
可以在阿里云鏡像倉庫管理中看到版本
使用鏡像
鏡像成功提交后,試下使用云倉庫中的鏡像分井。
先刪除本地的鏡像车猬,刪除命令docker rmi [鏡像ID],刪除之后用docker images查看鏡像尺锚。
執(zhí)行命令docker pull registry.cn-hangzhou.aliyuncs.com/biboheart/bhhello:1.0.0-SNAPSHOT下載鏡像珠闰,
再查看鏡像列表
使用這個鏡像創(chuàng)建容器并運行,執(zhí)行命令docker run -idt -p 80:80 --name bhhello registry.cn-hangzhou.aliyuncs.com/biboheart/bhhello:1.0.0-SNAPSHOT
使用docker ps命令查看容器
容器已經(jīng)正在運行瘫辩。
訪問測試
部署到生產(chǎn)服務(wù)器
服務(wù)器選擇centos7(還是前面測試的阿里云服務(wù)器)伏嗜,先查看下前面部署的項目的狀態(tài),確保服務(wù)已經(jīng)停止杭朱,可以確定測試的是接下去部署的服務(wù)阅仔。
安裝docker
安裝docker服務(wù)吹散,centos7使用命令yum install docker安裝docker服務(wù)弧械。完成后,可以用docker -v命令查看docker版本空民,成功返回docker版本的話刃唐,說明docker安裝成功。
執(zhí)行systemctl start docker啟動docker服務(wù)界轩,恩画饥,希望docker是隨著系統(tǒng)啟動自動啟動的。執(zhí)行systemctl enable docker命令浊猾,設(shè)置為開機自啟動抖甘。
如果當(dāng)前用戶不是root用戶的話,使用docker會報錯的葫慎,因為權(quán)限不足衔彻∞背瑁可以通過如下方法解決:
- 創(chuàng)建docker用戶組
sudo groupadd docker
- 將當(dāng)前用戶加入docker組
sudo usermod -aG docker $USER
- 重啟docker服務(wù)
sudo systemctl restart docker
下載鏡像
在這臺服務(wù)器中下載剛才提交到倉庫的鏡像,用戶命令docker pull registry.cn-hangzhou.aliyuncs.com/biboheart/bhhello:1.0.0-SNAPSHOT
使用docker images查看鏡像列表
創(chuàng)建并啟動容器
這里補充一點艰额,根據(jù)我是這樣使用SpringBoot(多環(huán)境配置與部署)澄港,那么docker也是需要不同的運行環(huán)境使用不同的配置文件。這時候在創(chuàng)建容器的時候需要增加參數(shù) -e "SPRING_PROFILES_ACTIVE=prod" 這個參數(shù)就如同前面用系統(tǒng)服務(wù)運行時加的prod環(huán)境參數(shù)柄沮。
執(zhí)行命令docker run -idt -p 80:80 -e "SPRING_PROFILES_ACTIVE=prod" --name bhhello registry.cn-hangzhou.aliyuncs.com/biboheart/bhhello:1.0.0-SNAPSHOT
用docker ps查看容器已經(jīng)啟動
請求測試結(jié)果
運行結(jié)果與前面相同回梧。確定使用了prod的配置文件。