美文网首页
工程生成镜像放到私有docker仓库

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

作者: szgl_lucifer | 来源:发表于2018-11-08 14:59 被阅读43次

    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配置可以上网找找文章看看。

    相关文章

      网友评论

          本文标题:工程生成镜像放到私有docker仓库

          本文链接:https://www.haomeiwen.com/subject/exyvxqtx.html