美文网首页
工程生成镜像放到私有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仓库

    1:本地开发的工程放到私有gitlib上。 2:在运行镜像的环境中(我使用的是centos7)安装git命令。 y...

  • 5.私有与公有镜像仓库

    一. 搭建私有镜像仓库 Docker Hub作为Docker默认官方公共镜像;如果想自己搭建私有镜像仓库,官方也提...

  • Docker

    构建镜像仓库 Docker运行java程序 1.1.6 搭建docker私有仓库 新建私有仓库 1.2.1 数据挂...

  • docker

    docker 私有仓库 下载镜像registrydocker pull registry 配置私有仓库(/etc/...

  • Docker删除私有仓库镜像

    Docker删除私有仓库镜像 安装删除脚本 设置私有仓库目录环境变量 删除镜像

  • Docker之八私有仓库

    个人专题目录 Docker 私有仓库 1. 私有仓库搭建 2. 将镜像上传至私有仓库 3. 从私有仓库拉取镜像

  • 容器(5)--Docker 仓库--2.Docker-regis

    镜像的私有仓库 Docker官方提供了docker-registry组件,我们可以用它来构建我们的私有镜像仓库。安...

  • docker 连接私有仓库

    docker 连接私有仓库,并向私有仓库推送镜像 一、检查是否已经配置私有仓库 Insecure Registri...

  • docker私有镜像仓库搭建和镜像删除

    docker私有镜像仓库一般用来存放公司内部的镜像,比如微服务中会有很多的服务需要放到自己公司内部的镜像仓库上,发...

  • 创建私有docker仓库

    使用私有仓库pull push更快速。 使⽤registry镜像创建私有仓库(仓库端) docker-regist...

网友评论

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

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