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工程中配置的敞贡,配置好后,其他兩個工程都可以使用這個插件的功能摄职。
剛開始的時候誊役,我在三個里面都配置了,工程不報(bào)錯,也可以正常運(yùn)行谷市,maven deploy也提示我正常蛔垢。可我在上面的步驟7生成jar包的時候迫悠,mvn install的時候一直報(bào)錯鹏漆,提示我找不到我上傳到私服的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)你的項(xià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文件的路徑节槐。這個一般最好在工程中配置,因?yàn)閜ull下來的東西都是工程在使用的拐纱,跟著工程走感覺更加合理铜异。
具體的setting配置可以上網(wǎng)找找文章看看。