Docker Swarm + SpringCloud(三)构建镜像并推送到远程仓库

Maven 插件

dockerfile-maven-plugin:1.4.9,前生是docker-maven-plugin,是一个快速构建docker镜像的maven插件,github地址:https://github.com/spotify/dockerfile-maven

配置setting.xml

setting.xml文件一般在用户目录下的.m2文件夹下

  1. 在<servers><servers>中添加neuxs和docker推送的认证信息
<servers>
    <server>
       <id>neuxs</id>
       <username>admin</username>
       <password>admin123</password>
    </server>
     <server>
        <id>192.168.30.205:5000</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
<servers>
  1. 在<profiles></profiles>中添加远程仓库的配置信息
<profiles>
    <profile>
      <id>mario-nexus</id>
      <repositories>
          <repository>
            <id>mario nexus repository</id>
            <name>mario nexus repository</name>
            <url>http://192.168.30.205:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
      </repositories>
    </profile>
</profiles>
  1. 在<activeProfiles></activeProfiles>中激活上面的配置
<activeProfiles>
    <activeProfile>mario-nexus</activeProfile>
</activeProfiles>

配置dockerfile-maven-plugin

  1. 在父pom.xml 中添加docker镜像的仓库地址和nexus的仓库地址
<properties>
    ...
    <docker.repository>192.168.30.206:5000</docker.repository>
</properties>

....
<distributionManagement>
    <repository>
        <id>nexus</id>
        <url>http://192.168.30.205:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus</id>
        <url>http://192.168.30.205:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

2.在discovery中的pom.xml配置镜像信息

<build>
    <plugins>
        ......
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>default</id>
                    <goals>
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <repository>${docker.repository}/${project.artifactId}</repository>
                <tag>${project.version}</tag>
                <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                <buildArgs>
                    <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

<useMavenSettingsForAuth>true</useMavenSettingsForAuth>会使用settting.xml中的认证信息,通过docker仓库的地址匹配
<buildArgs>可以设置自定义参数,给Dockerfile使用

  1. 编写Dockerfile文件
    在discovery的pom.xml同目录下新建一个Dockerfile文件
FROM openjdk:8-jre-alpine
ARG JAR_FILE
COPY target/${JAR_FILE} discovery.jar
EXPOSE 8761
ENTRYPOINT ["java","-jar","/discovery.jar"]

4.修改discovery,provider-user,provider-order的application.yml中的defaultZone属性,因为在一个宿主机的不同容器间需要通过容器名,并且配置network才能通讯,之间是通过--link,新版本已不再推荐

//defaultZone: http://locahost:8761/eureka/
defaultZone: http://discovery:8761/eureka/

FROM 设置基础镜像,openjdk:8-jre-alpine,一个小的基础jdk镜像,会有时区问题,可以自行修改
ARG 使用pom.xml定义的参数

构建并推送

  1. 为了本地能识别远程docker仓库,还需要将仓库地址配置到本地的insecure-registries列表中
  • linux 在 /etc/docker/ 新建或修改 daemon.json,编辑保存
{
   "insecure-registries":["http://192.168.30.205:5000"]
}

重启docker systemctl restart docker

  • docker桌面版,直接在设置->Daemon中配置后重启
  • image.png
  1. 登录仓库docker login 192.168.30.206:5000,输入用户名和密码
Username: admin
Password: 
Login Succeeded
  1. 在discovery目录下执行mvn clean deploy,插件会自动执行打包,构建,推送
    控制会打印执行过程,比如build
[INFO] Image will be built as 192.168.30.205:5000/discovery:0.0.1-SNAPSHOT
[INFO] 
[INFO] Step 1/5 : FROM openjdk:8-jre-alpine
[INFO] 
[INFO] Pulling from library/openjdk
[INFO] Digest: sha256:e8a689c4b2913f07e401e5e9325d66cecc33d30738aadf1dbe3db5af70997742
[INFO] Status: Image is up to date for openjdk:8-jre-alpine
[INFO]  ---> 2e01f547f003
[INFO] Step 2/5 : ARG JAR_FILE
[INFO] 
[INFO]  ---> Using cache
[INFO]  ---> d3f32052650f
[INFO] Step 3/5 : COPY target/${JAR_FILE} discovery.jar
[INFO] 
[INFO]  ---> cf105f53d1b7
[INFO] Step 4/5 : EXPOSE 8761
[INFO] 
[INFO]  ---> Running in ca9b00054168
[INFO] Removing intermediate container ca9b00054168
[INFO]  ---> 80706e9991d6
[INFO] Step 5/5 : ENTRYPOINT ["java","-jar","/discovery.jar"]
[INFO] 
[INFO]  ---> Running in 099810346b7c
[INFO] Removing intermediate container 099810346b7c
[INFO]  ---> 2010ed4e1fcb
[INFO] Successfully built 2010ed4e1fcb
[INFO] Successfully tagged 192.168.30.205:5000/discovery:0.0.1-SNAPSHOT

push

[INFO] --- dockerfile-maven-plugin:1.4.9:push (default) @ discovery ---
[INFO] The push refers to repository [192.168.30.205:5000/discovery]
[INFO] Image 1d56fe2feaed: Preparing
[INFO] Image 9bca1faaa73e: Preparing
[INFO] Image 0c3170905795: Preparing
[INFO] Image df64d3292fd6: Preparing
[INFO] Image df64d3292fd6: Layer already exists
[INFO] Image 9bca1faaa73e: Layer already exists
[INFO] Image 0c3170905795: Layer already exists
[INFO] Image 1d56fe2feaed: Pushing
[INFO] Image 1d56fe2feaed: Pushed
[INFO] 0.0.1-SNAPSHOT: digest: sha256:0a311489626a96f2ee922cbba3e62bd6161922442c49d5e627399d032bbc314d size: 1159

访问 http://192.168.30.205:8081/,选择docker-hosted,可以看到镜像已经上传成功

  • image.png

其他两个服务provider-user,provider-order 也是类似的操作,最终可以看到三个服务都已上传成功

  • image.png

下一篇 Docker Swarm + SpringCloud(四)docker-compose编排镜像

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

推荐阅读更多精彩内容