1:本地開發(fā)的工程放到私有g(shù)itlib上。
2:在運(yùn)行鏡像的環(huán)境中(我使用的是centos7)安裝git命令。
yum install git
查看是否安裝成功
git --version

3:運(yùn)行g(shù)it命令,下載我上傳到gitlib的工程。
git clone http://192.168.155.99:82/RisingCloud/rc-alarm-engine.git

ps:更新工程命令:在rc-alarm-engine目錄里運(yùn)行 git pull命令,更新master版本。
其他git命令上網(wǎng)查詢。
4:在運(yùn)行鏡像的環(huán)境中(我使用的是centos7)安裝maven命令。
下載maven安裝包
yum install wget
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz

解壓maven包
tar zxf apache-maven-3.1.1-bin.tar.gz

移動到指定目錄
mv apache-maven-3.1.1 /usr/local/maven3

安裝jdk
下載:
解壓:
tar -zxvf jdk1.8.0_144.tar.gz
移動到:
mv jdk1.8.0_144 /usr/java/
配置環(huán)境變量
vi /etc/profile
#在適當(dāng)?shù)奈恢锰砑?/p>
#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_144
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export M2_HOME=/usr/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin

文件生效
source?/etc/profile
檢查maven是否安裝成功
mvn -v

5:回到git下載的工程目錄

6:我在工程中先寫好了dockerfile文件,位置和內(nèi)容:

dockerfile內(nèi)容:

FROM:哪個鏡像作為基礎(chǔ)鏡像。我用的是dockerhub上提供的原始o(jì)penjdk8。(注意:這里最好用官方的基礎(chǔ)鏡像,不要用其他第三方的基礎(chǔ)鏡像,會有安全隱患)
MAINTAINER:作者
ADD:把rc-ae-server/target/路徑下的jar包,放到鏡像里的根路徑并起名app.jar
EXPOSE:設(shè)置鏡像啟動后對外暴露的端口,這個端口跟我工程啟動的端口配置的一致
ENTRYPOINT:用java -jar 啟動鏡像中的app.jar包
7:maven編譯工程,生成jar包
工程中很多的包我們都放在了自己建立的私庫中,所以要先在.m2下配置setting.xml,允許在maven私庫中下載jar包。
setting.xml文件配置內(nèi)容:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
? ? ? ? ? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
? ? ? ? ? xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/root/.m2/repository</localRepository>
? <servers>
? ? ? ? ? <server>
? ? ? ? ? ? ? ? <id>myReleases</id>
? ? ? ? ? ? ? ? <username>admin</username>
? ? ? ? ? ? ? ? <password>admin123</password>
? ? ? ? ? </server>
? ? ? ? <server>
? ? ? ? ? ? ? ? <id>mySnapshots</id>
? ? ? ? ? ? ? ? <username>admin</username>
? ? ? ? ? ? ? ? <password>admin123</password>
? ? ? ? </server>
? ? ? ? ? ? ? ? <server>
? ? ? ? ? ? ? ? <id>thirdparty</id>
? ? ? ? ? ? ? ? <username>admin</username>
? ? ? ? ? ? ? ? <password>admin123</password>
? ? ? ? </server>
? </servers>? ? ? ? ?
? ? <mirrors>
? ? ? ? <mirror>
? ? ? ? ? ? <id>nexus</id>
? ? ? ? ? ? <mirrorOf>*</mirrorOf>
? ? ? ? ? ? <url>http://192.168.155.100:8081/repository/maven-public/</url>
? ? ? ? </mirror>
? ? ? </mirrors>
? ? <profiles>
? ? ? ? <profile>
? ? ? ? ? ? <id>nexus</id>
? ? ? ? ? ? <repositories>
? ? ? ? ? ? ? ? <repository>
? ? ? ? ? ? ? ? ? ? <id>nexus</id>
? ? ? ? ? ? ? ? ? ? <name>nexus repository</name>
? ? ? ? ? ? ? ? ? ? <url>http://192.168.155.100:8081/repository/maven-public/</url>
? ? ? ? ? ? ? ? ? ? <releases>
? ? ? ? ? ? ? ? ? ? ? ? <enabled>true</enabled>
? ? ? ? ? ? ? ? ? ? </releases>
? ? ? ? ? ? ? ? ? ? <snapshots>
? ? ? ? ? ? ? ? ? ? ? ? <enabled>true</enabled>
? ? ? ? ? ? ? ? ? ? </snapshots>
? ? ? ? ? ? ? ? </repository>
? ? ? ? ? ? </repositories>
? ? ? ? ? ? <pluginRepositories>
? ? ? ? ? ? ? ? <pluginRepository>
? ? ? ? ? ? ? ? ? ? <id>nexus</id>
? ? ? ? ? ? ? ? ? ? <name>nexus repository</name>
? ? ? ? ? ? ? ? ? ? <url>http://192.168.155.100:8081/repository/maven-public/</url>
? ? ? ? ? ? ? ? ? ? <releases>
? ? ? ? ? ? ? ? ? ? ? ? <enabled>true</enabled>
? ? ? ? ? ? ? ? ? ? </releases>
? ? ? ? ? ? ? ? ? ? <snapshots>
? ? ? ? ? ? ? ? ? ? ? ? <enabled>true</enabled>
? ? ? ? ? ? ? ? ? ? </snapshots>
? ? ? ? ? ? ? ? </pluginRepository>
? ? ? ? ? ? </pluginRepositories>
? ? ? ? </profile>
? ? </profiles>
? ? <activeProfiles>
? ? ? ? <activeProfile>nexus</activeProfile>
? ? </activeProfiles>
</settings>
具體的setting.xml解釋請上網(wǎng)上找相應(yīng)說明,這里就不解釋了。
mvn clean install

這時候能在工程的target目錄下看到打好的jar包

8:在工程根目錄下我放置的Dockerfile這個路徑下,運(yùn)行docker命令打鏡像
docker build -t "192.168.155.100:8082/rc-alarm-engine" .

docker images 查看生成的鏡像

9:鏡像啟動生成容器
docker run -d -p 9003:9003 --name rc-alarm-engine 192.168.155.100:8082/rc-alarm-engine

打開容器日志,看工程是否啟動成功:
docker logs -f 容器id

10:工程正常啟動,說明鏡像沒有問題,然后把鏡像push到私有庫上(nexus-docker)
docker login -u admin -p admin123 192.168.155.100:8082

docker push 192.168.155.100:8082/rc-alarm-engine

查看是否已經(jīng)傳到nexus-docker

上傳成功,推出
docker logout 192.168.155.100:8082

坑、坑、坑、在操作過程中遇到的各種各樣的坑,寫出來,希望大家以后小心
1:我們用的是springcloud搭建的工程,每個子服務(wù)的結(jié)構(gòu)是:client、service、vo

在配置pom.xml文件的時候,一定要注意引用maven插件只能配置在一處,不能配置多個。

我是在service工程中配置的,配置好后,其他兩個工程都可以使用這個插件的功能。
剛開始的時候,我在三個里面都配置了,工程不報錯,也可以正常運(yùn)行,maven deploy也提示我正常??晌以谏厦娴牟襟E7生成jar包的時候,mvn install的時候一直報錯,提示我找不到我上傳到私服的jar包。我在私服上是可以看到我上傳的jar包,就是提示找不到。最后發(fā)現(xiàn)原來是配置了多個maven-plugin導(dǎo)致我上傳的jar包有問題,系統(tǒng)也不提示。找了好長時間。郁悶死了。
2:生成鏡像的時候,一定要把私服的ip+端口封進(jìn)去,docker build -t "192.168.155.100:8082/rc-alarm-engine" 這樣寫。如果不寫私服的ip+端口,生成的鏡像是傳不到私服上的。 請大家注意。
3:maven 總結(jié)
一:mvn install 命令會從遠(yuǎn)程pull鏡像。當(dāng)你的項目配置了<distributionManagement>它會從你的私服上pull數(shù)據(jù)。 你本地工程有也沒用。如果你不配置<distributionManagement>,mvn install 會在你本地找是否有數(shù)據(jù)。 感覺這個是eclipse和idea自己加進(jìn)來的功能,不是maven本身的用法。(自己猜的)
二:在本地的.m2下配置的setting.xml文件,<server>是配置push密碼的。<mirrors>相當(dāng)于一個攔截器,攔截pull
<profile>配置pull文件的路徑。這個一般最好在工程中配置,因為pull下來的東西都是工程在使用的,跟著工程走感覺更加合理。
具體的setting配置可以上網(wǎng)找找文章看看。