工程生成鏡像放到私有docker倉庫

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

下載:

wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm?AuthParam=1534132498_e541d098d71f6243516fa69cd17eba60

解壓:

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)找找文章看看。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容