工程生成镜像放到私有docker仓库

1:本地开发的工程放到私有gitlib上。

2:在运行镜像的环境中(我使用的是centos7)安装git命令。

yum install git

查看是否安装成功

git --version

3:运行git命令,下载我上传到gitlib的工程。

git clone http://192.168.155.99:82/RisingCloud/rc-alarm-engine.git

ps:更新工程命令:在rc-alarm-engine目录里运行 git pull命令,更新master版本。

其他git命令上网查询。

4:在运行镜像的环境中(我使用的是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/

配置环境变量

vi /etc/profile

#在适当的位置添加

#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文件,位置和内容:


dockerfile内容:


FROM:哪个镜像作为基础镜像。我用的是dockerhub上提供的原始openjdk8。(注意:这里最好用官方的基础镜像,不要用其他第三方的基础镜像,会有安全隐患

MAINTAINER:作者

ADD:把rc-ae-server/target/路径下的jar包,放到镜像里的根路径并起名app.jar

EXPOSE:设置镜像启动后对外暴露的端口,这个端口跟我工程启动的端口配置的一致

ENTRYPOINT:用java -jar 启动镜像中的app.jar包

7:maven编译工程,生成jar包

工程中很多的包我们都放在了自己建立的私库中,所以要先在.m2下配置setting.xml,允许在maven私库中下载jar包。

setting.xml文件配置内容:

<?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解释请上网上找相应说明,这里就不解释了。


mvn clean install

这时候能在工程的target目录下看到打好的jar包

8:在工程根目录下我放置的Dockerfile这个路径下,运行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

查看是否已经传到nexus-docker

上传成功,推出

docker logout 192.168.155.100:8082

坑、坑、坑、在操作过程中遇到的各种各样的坑,写出来,希望大家以后小心

1:我们用的是springcloud搭建的工程,每个子服务的结构是:client、service、vo

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


我是在service工程中配置的,配置好后,其他两个工程都可以使用这个插件的功能。

刚开始的时候,我在三个里面都配置了,工程不报错,也可以正常运行,maven deploy也提示我正常。可我在上面的步骤7生成jar包的时候,mvn install的时候一直报错,提示我找不到我上传到私服的jar包。我在私服上是可以看到我上传的jar包,就是提示找不到。最后发现原来是配置了多个maven-plugin导致我上传的jar包有问题,系统也不提示。找了好长时间。郁闷死了。

2:生成镜像的时候,一定要把私服的ip+端口封进去,docker build -t "192.168.155.100:8082/rc-alarm-engine" 这样写。如果不写私服的ip+端口,生成的镜像是传不到私服上的。 请大家注意。

3:maven 总结

一:mvn install 命令会从远程pull镜像。当你的项目配置了<distributionManagement>它会从你的私服上pull数据。 你本地工程有也没用。如果你不配置<distributionManagement>,mvn install 会在你本地找是否有数据。 感觉这个是eclipse和idea自己加进来的功能,不是maven本身的用法。(自己猜的)

二:在本地的.m2下配置的setting.xml文件,<server>是配置push密码的。<mirrors>相当于一个拦截器,拦截pull

<profile>配置pull文件的路径。这个一般最好在工程中配置,因为pull下来的东西都是工程在使用的,跟着工程走感觉更加合理。

具体的setting配置可以上网找找文章看看。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容