springboot+maven-docker-plugin将本地项目推送到阿里云服务并远程访问

一,前提条件

1,如果没有阿里云账号请注册阿里云账号,注册完成后在产品---镜像服务里创建镜像,创建完成后如下图所示:

2,本地(我这里是win10环境)已安装docker,如果没有可去官网下载,下载地址:https://docs.docker.com/docker-for-windows/install/

3,maven settings.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>D:\repository</localRepository>

  <pluginGroups>

        <pluginGroup>com.spotify</pluginGroup>

    </pluginGroups>

  <proxies/>

  <servers>

    <server>

    <!--maven的pom中可以根据这个id找到这个server节点的配置--> 

    <id>docker-aliyun</id>

    <!--这里是在阿里云注册的账号-->

    <username>abcd</username>

    <!--这里是在阿里云注册的密码-->

    <password>abcd123456</password>

    <configuration>

      <!--这是在阿里云注册时填写的邮箱-->

      <email>adcd@qq.com</email>

    </configuration>

  </server>

  </servers>

  <mirrors>

  <!--阿里云的镜像-->

  <mirror>

    <id>alimaven</id>

    <name>aliyun maven</name>

    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

    <mirrorOf>central</mirrorOf>

  </mirror>

  <!--中央仓库在中国的位置-->

  <mirror>

    <id> maven-net-cn</id>

    <name> Maven China Mirror</name>

    <url> http://maven.net.cn/content/groups/public/</url>

    <mirrorOf>central</mirrorOf>

  </mirror>

  </mirrors>

  <profiles>

    <!--配置jdk的版本-->

    <profile>

      <id>jdk-1.8</id>

      <activation>

        <activeByDefault>true</activeByDefault>

        <jdk>1.8</jdk>

      </activation>

      <properties>

        <maven.compiler.source>1.8</maven.compiler.source>

        <maven.compiler.target>1.8</maven.compiler.target>

        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

      </properties>

    </profile>

  </profiles>

</settings>



二,springboot项目配置

1,创建Dockerfile文件

在项目的源文件路径下新建Dockerfile文件,Dockerfile文件是构建docker镜像的核心文件,配置如下:

#基于哪个镜像

FROM java:8

#将本地文件夹挂载到当前容器

VOLUME /tmp

#复制文件到容器

ADD gold-recycle-service.jar app.jar

#声明需要暴露的端口

EXPOSE 8086

#配置容器启动后执行的命令

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2,pom.xml文件配置

pom.xml文件需要增加以下几点节点配置:

<properties>

  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  <java.version>1.8</java.version>

  <!-- 监听端口 -->

  <server.port>8086</server.port>

  <!-- 镜像名称 docker.repostory表示仓库地址,docker.registry.name表示仓库名称。可以通过阿里云镜像查看-->

  <docker.repostory>registry.cn-shenzhen.aliyuncs.com</docker.repostory>

  <docker.registry.name>springios</docker.registry.name>

</properties>


<!--maven docker插件-->

<plugin>

  <groupId>com.spotify</groupId>

  <artifactId>docker-maven-plugin</artifactId>

  <version>0.4.14</version>

<configuration>

      <imageName>registry.cn-shenzhen.aliyuncs.com/springios/${project.artifactId}:${project.version}</imageName>

      <!--指定docker镜像的版本号-->

     <imageTags>

        <!--使用maven项目的版本号-->

        <imageTag>${project.version}</imageTag>

        <imageTag>latest</imageTag>

       </imageTags>

      <!--Dockerfile文件位置-->

      <dockerDirectory>src/main/docker</dockerDirectory>

      <!--指定推送的镜像-->

      <dockerHost>http://127.0.0.1:2375</dockerHost>

   <resources>

    <resource>

            <targetPath>/</targetPath>

            <!--用于指定需要复制的目录-->

            <directory>${project.build.directory}</directory>

            <!--用于指定需要复制的文件-->

            <include>${project.build.finalName}.jar</include>

         </resource>

     </resources>

        <!--推送阿里云相关-->

        <serverId>docker-aliyun</serverId>

        <!--表示阿里云的docker仓库地址。阿里云的容器镜像服务地址-->

        <registryUrl>registry.cn-shenzhen.aliyuncs.com/springios/gold-recycle-service</registryUrl>

        <!--表示推送镜像到仓库。-->

        <pushImage>true</pushImage>

    </configuration>

</plugin>

<plugin>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-maven-plugin</artifactId>

  <!--加入下面两项配置-->

 <executions>

    <execution>

      <goals>

            <goal>repackage</goal>

       </goals>

</execution>

</executions>

<configuration>

      <includeSystemScope>true</includeSystemScope>

</configuration>

</plugin>

三,推送服务

完成了以上准备工作后就可以使用命令:mvn -f pom.xml clean package -DskipTests docker:build 来推送服务了 ,推送成功如下:

aliyuncs.com/springios/gold-recycle-service:0.0.1-SNAPSHOT

[INFO] Tagging registry.cn-shenzhen.aliyuncs.com/springios/gold-recycle-service:0.0.1-SNAPSHOT with 0.0.1-SNAPSHOT

[INFO] Tagging registry.cn-shenzhen.aliyuncs.com/springios/gold-recycle-service:0.0.1-SNAPSHOT with latest

[INFO] Pushing registry.cn-shenzhen.aliyuncs.com/springios/gold-recycle-service:0.0.1-SNAPSHOT

The push refers to repository [registry.cn-shenzhen.aliyuncs.com/springios/gold-recycle-service]

203c86e211c3: Pushed

35c20f26d188: Pushed

c3fe59dd9556: Pushed

6ed1a81ba5b6: Pushed

a3483ce177ce: Pushed

ce6c8756685b: Pushed

30339f20ced0: Pushed

0eb22bfb707d: Pushed

a2ae92ffcd29: Pushed

0.0.1-SNAPSHOT: digest: sha256:f4994be046ce880eb41240dcd1c47a9d8f66730457c388609003205684b5a6b1 size: 2212

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time:  49.472 s

四,阿里云服务器使用镜像

1,登录服务器:sudo docker login --username=szandyye2018 registry.cn-shenzhen.aliyuncs.com,密码为开通服务时设置的密码。

2,下载刚推送的镜像:sudo docker pull registry.cn-shenzhen.aliyuncs.com/springios/gold-recycle-service:[镜像版本号]

3,使用docker images查看镜像是否下载成功。

4,启动镜像:docker run --name goldService -p 8086:8086 -t registry.cn-shenzhen.aliyuncs.com/springios/gold-recycle-service:0.0.1-SNAPSHOT    --name:重新指定镜像的名称,-p:端口映射   -t:前台运行,可以看到项目启动信息。

五,浏览器验证。

注意事项:

如果镜像需要访问数据库,在打包前需要查看阿里云服务器的内网地址,查看命令:ip add,显示信息如下:

[root@izwz97rz0layh3rvnc50xaz ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:16:3e:12:4e:05 brd ff:ff:ff:ff:ff:ff

    inet 172.18.120.230/20 brd 172.18.127.255 scope global dynamic eth0

      valid_lft 314587579sec preferred_lft 314587579sec

3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP

    link/ether 02:42:00:23:2e:77 brd ff:ff:ff:ff:ff:ff

    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

      valid_lft forever preferred_lft forever

15: vethcfac81a@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP

    link/ether 3e:91:41:ea:87:01 brd ff:ff:ff:ff:ff:ff link-netnsid 0

27: veth121bed1@if26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP

    link/ether 4e:13:6c:8a:a3:9e brd ff:ff:ff:ff:ff:ff link-netnsid 1

[root@izwz97rz0layh3rvnc50xaz ~]#

主要看第2和第3,第二点eth0表示服务器的内网信息,其中172.18.120.230就是服务器的内网地址,该地址在使用mvn命令打包前需要写到配置文件中。第三点表示docker容器的网络配置信息。

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

推荐阅读更多精彩内容