精华内容
下载资源
问答
  • 打包docker镜像推送到远程服务器并部署到k8s

    万次阅读 多人点赞 2021-10-24 11:10:55
    虽然利用这个docker插件也可以完成docker镜像的打包及推送,但本文我们将换一种方式,使用maven的docker-maven-plugin插件完成docker镜像的打包,以及推送到远程docker服务器。 1、Dockerfile.

    前提条件:

    1、docker服务器已开启远程访问,参考《远程docker服务器携带证书连接》

    2、服务器上已经搭建好k8s集群,本文是k8s单点集群用于测试。

            在之前的文章中我们已经通过idea的docker插件测试了远程docker服务器已经能够正常访问,虽然利用这个docker插件也可以完成docker镜像的打包及推送,但本文我们将换一种方式,使用maven的docker-maven-plugin插件完成docker镜像的打包,以及推送到远程docker服务器。

    1、Dockerfile

            Dockerfile文件用于将我们的应用做成docker镜像

    # 指定jdk环境版本,基于java8创建镜像
    FROM java:8
    # 挂载临时目录
    VOLUME /tmp
    # 添加指定jar包到容器《此处为项目打包产生的jar包全名》
    ADD practice-job-0.0.1-SNAPSHOT.jar /practice-job.jar
    # 容器向外暴露的端口号《指该项目运行所占用的的端口号》
    EXPOSE 8081
    # 容器启动后执行的命令
    ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/practice-job.jar" ]

    2、pom配置

            pom文件的相关配置如下,注意填入远程服务器的ip,并指明上述Dockerfile路径以及访问远程docker需要的pem证书文件的路径。

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
                <!--使用docker-maven-plugin插件,用于将该服务打包成镜像发往docker服务端-->
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>1.2.2</version>
                    <!--将插件绑定在某个phase执行 -->
                    <executions>
                        <execution>
                            <id>build-image</id>
                            <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build -->
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <forceTags>true</forceTags>
                        <!--指定生成的镜像名 该处修改为自己想要生成的镜像名称-->
                        <imageName>practice-job</imageName>
                        <!--指定标签-->
                        <imageTags>
                            <imageTag>latest</imageTag>
                        </imageTags>
                        <!-- 指定Dockerfile 路径 -->
                        <dockerDirectory>${project.basedir}</dockerDirectory>
                        <!--指定远程docker地址 -->
                        <dockerHost>https://公网ip:2376</dockerHost>
                        <!--指定pem证书文件路径地址 -->
                        <dockerCertPath>${project.basedir}/src/main/resources/pem</dockerCertPath>
                        <!-- 这里是复制jar包到docker容器指定目录配置 -->
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <!--jar 包所在的路径此处配置的即对应 target 目录 -->
                                <directory>${project.build.directory}</directory>
                                <!-- 需要包含的jar包,这里对应的是Dockerfile中添加的文件名 -->
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    3、镜像推送

            上述准备就绪以后执行install命令,等待一段时间后下方控制台出现BUILD SUCCESS则说明镜像推送成功。

            接着去远程服务器验证一下,输入docker images命令查看容器镜像。

            可以看到我们的应用镜像已经推送成功了,下面就是部署阶段。

    4、k8s部署

            如果在以前我们的部署环境只有docker容器,那么这里只需要docker run我们的应用镜像,将项目部署在docker容器就可以访问了。但现在我们的部署环境是k8s+docker,所以不能直接运行我们的应用镜像进行部署,下面进入k8s的部署。

            首先需要创建两个yaml文件:practice-job-deployment.yaml、practice-job-service.yaml,至于这两个文件的作用涉及到k8s的概念,关于k8s的概念将会在之后的文章中谈到,这里只需要知道在k8s中的大部分配置都是基于yaml文件进行定义的就可以了。

    vi practice-job-deployment.yaml

    apiVersion: v1
    kind: Namespace
    metadata:
      name: practice
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: practice-job-deployment
      namespace: practice
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: practice-job-pod
      template:
        metadata:
          labels:
            app: practice-job-pod
        spec:
          hostNetwork: true
          containers:
            - name: practice-job-container
              image: practice-job:latest  #镜像名称+版本
              imagePullPolicy: Never   #表示镜像来源,IfNotPresent本地没有就从hub仓库拉取,Never表示只从本地
              ports:
                - containerPort: 8081
              env:
                # 指定日志文件路径
                - name: logging.path
                  value: /var/logs

    vi practice-job-service.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: practice-job-service
      namespace: practice
      labels:
        app: practice-job-service
    spec:
      type: NodePort
      selector:
        app: practice-job-pod
      ports:
        - name: http
          protocol: TCP
          port: 8081 #service(对内)的端口
          targetPort: 8081 #pod的端口
          nodePort: 32001 #service(对外)的端口
    

            然后分别执行命令:

    kubectl apply -f practice-job-deployment.yaml
    kubectl apply -f practice-job-service.yaml

            执行命令:kubectl get pod --all-namespaces 查看pod,可以看到我们项目的pod已经成功运行。

            执行命令:kubectl logs practice-job-deployment-77d685767-glvgm -n practice 查看应用运行日志。格式为:kubectl logs <pod的name> -n <pod的namespace>。

            执行命令:docker ps 可以看到项目也已经运行在容器中了

            执行命令:kubectl get service --all-namespaces 可以看到应用对应的服务也已启动成功且对外暴露的端口正是32001,这个端口就是我们前面在yaml文件中自己配置的。

            最后浏览器访问:公网ip:32001/doc.html。此路径只是针对我的项目,不同的项目路径不同。注意防火墙需要开启相应端口。

            至此应用从本地打包docker镜像推送至服务器,并部署到k8s+docker容器结束。

    展开全文
  • 这个demo简单演示了如何把一个flask的 Hello World 页面打包成docker镜像, 并且发远程镜像仓库的方法. 0.新建 Docker 镜像 首先, 新建应用文件app.py, requirments.txt, 和一个docker文件. mkdir demo &&...

    这个demo简单演示了如何把一个flask的 Hello World 页面打包成docker镜像, 并且发到远程镜像仓库的方法.

    0.新建 Docker 镜像

    首先, 新建应用文件app.py, requirments.txt, 和一个docker文件.

    mkdir demo && cd demo
    touch Dockerfile app.py requirements.txt
    复制代码
    requirments.txt
    flask
    redis
    复制代码
    app.py
    from flask import Flask
    from redis import Redis, RedisError
    import os
    
    redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        try:
            visits = redis.incr("counter")
        except RedisError:
            visits = 0
    
        html = "<h3>Hello {name}!</h3>" \
               "<b>Visits:</b> {visits}"
        return html.format(name=os.getenv("NAME", "world"), visits=visits)
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=80)
    复制代码
    Dockerfile
    # 基于python2.7官网镜像
    FROM python:2.7-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制当前目录下的文件到工作目录
    COPY . /app
    
    # 安装pip库
    RUN pip install --trusted-host pypi.python.org -r requirements.txt
    
    # 暴露80端口
    EXPOSE 80
    
    # 定义环境变量
    ENV NAME World
    
    # 容器启动后执行命令, 运行app
    CMD ["python", "app.py"]
    复制代码

    准备好文件就可以开始打包镜像了

    docker build --tag=demo .
    复制代码

    查看新镜像

    docker image ls -a
    复制代码

    运行镜像

    docker run -p 8000:80 demo
    复制代码

    打开浏览器访问 http://localhost:8000, 就可以看到 hello world 了.

    1. Docker镜像仓库

    为了方便学习 Docker 我们可以安装桌面客户端的 Docker for Mac / Docker for Windows.

    推镜像之前我们一般会给镜像打标签, 方便维护管理

    打标签命令:

    docker tag image username/库名:标签
    
    # 我们可以这样敲
    docker tag demo monk/demo:v1.0
    复制代码
    1.1 Docker Hub

    到官方的镜像仓库 Docker Hub 注册登录, 推镜像时就会在这里看到你的image了, 公开的镜像可以分享给别人使用.

    推送镜像之前需要先在终端登录 dockerhub:

    docker login
    复制代码

    推送完我们可以在docker hub上看到这个镜像.

    docker push monk/demo:v1.0
    复制代码
    1.2 阿里云

    在国内docker hub的速度比较慢, 建议还是用国内的镜像仓库, 比如阿里的, 需要在阿里管理后台容器镜像服务设置仓库.

    在终端切换阿里的docker账号

    docker login --username=username registry.cn-shenzhen.aliyuncs.com
    复制代码

    阿里管理后台说明了如何登录, 推送, 还有内网地址等操作, 跟着做就可以了, 步骤跟 DockerHub 的差不多只是换了阿里的地址.

    2. 镜像加速

    阿里云还有镜像加速器, 其实就是一个加速链接.

    Docker Desktop 设置 Prefrence > Daemon > Basic

    Registy mirrors 用阿里给你分配的加速地址, 然后应用重启 Docker for Mac / Docker for Windows.

    完.

    展开全文
  • Maven推本地jar包到远程仓库---nexus

    千次阅读 2019-06-25 20:05:23
    前几天在commons-tool工程下新建了几个日期相关的公共方法,本地测试没有问题,但了小伙伴的电脑上,我新加的公共方法报错,原因是没有把commons-tool工程打包推上远程仓库。老大叫我推一下远程仓库,啊?推远程...

    前几天在commons-tool工程下新建了几个日期相关的公共方法,本地测试没有问题,但到了小伙伴的电脑上,我新加的公共方法报错,原因是没有把commons-tool工程打包推上远程仓库。老大叫我推一下到远程仓库,啊?推远程仓库?怎么推?我先表面上答应着,回到自己位置上“面向百度编程”一顿操作。记录一下:

    1.配置pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        .....
    
        <distributionManagement>
        <repository>
            <id>releases</id>
            <name>Releases</name>
            <url>http://xxx:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshot</name>
            <url>http://xxx:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    </project>

    2.配置Maven的setting.xml

    在servers节点下为每个仓库名配置用户名和密码---releases,snapshots。注意,id要和pom.xml配置的id一致

      <servers>
        <server>
          <id>releases</id>
          <username>admin</username>
          <password>XXXX</password>
        </server>
        <server>
          <id>snapshots</id>
          <username>snap</username>
          <password>XXXX</password>
        </server>
      </servers>

    3.maven clean deploy打包并推送到远程仓库

    mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。

    mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
    mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。

     由上面的分析可知主要区别如下,

    package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
    install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
    deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

    参考大佬博客:maven命令package、install、deploy的区别

    完~

     

     

    展开全文
  • Maven推本地jar包到远程仓库

    千次阅读 2019-12-18 12:37:53
      今天在commons-utils 工程下新建了公司项目的公共方法,本地测试没有问题,需要将功能打成打包推上远程nexus仓库,具体推方式百度了一下,这里将具体操作记录一下: 一.配置pom.xml 在pom文件中添加远程仓库的...

      今天在commons-utils 工程下新建了公司项目的公共方法,本地测试没有问题,需要将功能打成打包推上远程nexus仓库,具体推送方式百度了一下,这里将具体操作记录一下:

    一.配置pom.xml

    在pom文件中添加远程仓库的地址和id.名称可以不需要.当然具体根据实际操作.

    <!--配置远程仓库地址-->
    <distributionManagement>
    		<repository>
    			<id>ceshi-id</id>
    			<name>名称</name>
    			<url>http://xxx.xxx.x.xx:8081/repository/ceshi-id/</url>
    		</repository>
    	</distributionManagement>
    

    二.配置Maven的setting.xml

    在maven配置文件中配置远程仓库的账号密码,id和pom文件中的必须一致.

    <servers>
            <server>
                <id>ceshi-id</id>
                <username>用户名</username>
                <password>密码</password>
            </server>
        </servers>
    

    三.打包并推送到远程仓库

    使用maven clean deploy 命令进行推送

    如果使用IDE,右侧可以直接点击命令
    初学者 maven推送
    或者可以直接在命令栏使用命令推送.

    maven的三个常用命令

    mvn clean package

      依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。

      package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

    mvn clean install

      依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。

      install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库

    mvn clean deploy

      依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。

      deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

    其他maven命令:

    1. 编译:mvn compile
    2. 清理:mvn clean
    3. 测试:mvn test
    4. 打包:mvn package
    5. 安装到repository:mvn install(具有编译和打包的功能)
    6. 部署到tomcat:mvn deploy
    展开全文
  • 本地推jar包到远程maven仓库

    千次阅读 2019-05-10 19:05:16
    1.windows cmd切换maven bin目录下: 2.将远程仓库地址、用户名、密码配置maven conf目录下的...3.推jar包到远程仓库: 推动命令: mvn deploy:deploy-file -DgroupId=com.github.sps.metric -Dartif...
  • Existing folder(存在的本地工程,推送到新的远程地址) cd existing_folder git init git remote add origin http://192.168.3.71/wangyf/sdk-cms.git git add . git commit -m "Initial commit" git push -u...
  • 每天前100人再5门编程课! AI+5门300元课程+社群闭门分享会 源码开源下载:https://github.com/DjangoPeng/keras-101/tree/master/code_samples 【为什么学AI】 归功于近年来大规模数据和硬件计算能力的大...
  • 前言 最近公司使用帆软(finereport)报表工具制作数据报表,并且需要将制作好的报表打包成war通过docker...1.使用终端进入项目所在的目录 2.执行以下命令打包项目 jar cvf webroot.war * 生成的war就在当前...
  • 一、将jar送到本地maven镜像库的方法: 1、具有maven和jdk环境,并配置环境变量; 2、mvn install:install-file -Dfile=D:\maven\xmemcached-1.2.5.jar -DgroupId=...
  • 应用在测试环境下打的收不了 打包之后都没有推。经过好久才找到原因,很蛋疼。 这里选择了证书和描述文件,当然这都是测试的。 在XCODE6上打包的时候下面这一步 ...
  • 微信封号推卡包发消息方法揭秘

    千次阅读 2019-06-14 01:14:27
    众所周知,微信封号之后是不能发消息的,这就大大的影响了正常的网络沟通,在诸多微信被封人群中有各色各样的职业,特别是微商封号或者永久封号联系不客户都是极大损失;所谓树跟被断、鱼鳞被揭、微信被封作为由古...
  • iOS打包后收不信息

    千次阅读 2017-05-04 10:03:24
    应用在测试环境下打的收不了,打包之后都没有推,但是我真机测试又是可以收到推消息的。经过好久才找到原因,感觉很坑。这里记录一下问题: 1.由于我的推第三方使用的是"个推",我先用个推的官网发了一...
  • docker 构建镜像并推送到Harbor私服

    万次阅读 2018-04-03 23:57:28
    搭建私服 Harbor 企业级 Docker Registry HarBor项目: https://github.com/vmware/harbor   下载: ...  安装文档: ...上次docker仓库私服必须要先打tag ...推镜像私服 docker push xxx/frog-spider/api-war:latest
  • 示例: mvn deploy:deploy-file -DgroupId=...
  • 使用adb sideload命令推刷机包到recovery直接刷机。就算你的手机无法进入系统或者已经崩溃了使用ADB命令也可以刷机救砖! 在第三方recovery 5清4清之后系统也被删除,此时重启recovery或者挂载mtp都不行的话,...
  • 在本地建立t4仓库,并进行git init初始...在将本地仓库使用git push推送到远端仓库中时,由于远端仓库中在以MIT协议初始化的时候产生了LICENSE文件,而本地仓库没有这个文件,所以提示不能进行推送合并。 此时需...
  • 如何使用maven打包并发布中央服务器

    千次阅读 热门讨论 2018-03-07 23:41:41
    今天我们介绍一下maven打包相关的知识点,平时我们使用的大多数类库,就是在maven的中央服务器上面,如果我们要把自己的,发布中央服务器,让大家都可以使用。这就需要使用打包的相关知识点,接下我们就进入...
  • Git把Tag推送到远程仓库

    千次阅读 2020-08-06 16:54:33
    git push并不会把tag标签传送远端服务器上,只有通过显式命令才能分享标签远端仓库。 1.push单个tag,命令格式为:git push origin [tagname] 例如: git push origin v1.0 #将本地v1.0的tag推...
  • idea将jar发布私服

    千次阅读 2017-10-09 19:12:41
    重要的时候有的开发人员的环境不能正确的配置maven的环境,不能正确的执行mvn命令,需要找别人来将jar发布的私服上面,这让我很受不了啊,所以就修改的了项目的pom文件,在idea中直接发布jar包到私服。  1、 在...
  • Ios在打包测试的时候,收不后台的推,真机调试的时候能收到,打包测试用的是hoc,用的是极光推
  • 极光推提示:名和AppKey不匹配

    千次阅读 2018-04-11 14:42:17
    先看我的截图名和AppKey不匹配,请Portal上获取您的名和APPKey.。。。。。导致这个原因有:1.极光推中配置的android 名和你项目中的名不一致2.极光推后台注册时,没有填写应用的名...
  • 使用maven命令上传jar包到仓库

    万次阅读 2019-03-26 10:00:54
    1、使用maven命令上传jar包到仓库时,若仓库有权限控制则需要在本地maven settings.xml文件中配置具有权限的账号,否则上传jar时会收到404 无授权的提示,上传jar失败。   要上传仓库地址对应在...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。 -F:在重启计算机时强迫fsck。 -time:设定关机前的时间。 -m: 将系统改为单用户模式。 -i:关机时显示系统...
  • 最近在做项目的时候在推上面遇到了一个问题,用Xcode在真机上运行调试时可以正常收到推消息,但是将项目打包测试出来后安装真机上无法收到推,猜想问题肯定是出在证书上,因为iOS推有一个开发证书和一个...
  • Jenkins配置发送jar包到Windows服务器

    千次阅读 2019-02-19 13:43:00
    Exec command 的意思是先切换项目所在目录,再执行start.bat脚本 任务脚本编写 在windows服务器相应目录上新建start.bat 文件 ::强制覆盖不提示 copy /y C:\"Program Files"\nsoftware\...
  • 最近刚开始使用Docker,把常用的命令摸了一遍后,就想把镜像的build过程放Jenkins上。具体过程就不说了,十分简单,只需要几条命令就可以了。 可以在向私有registry推时却报出了异常: docker push registry...
  • springboot 利用 docker-maven插件生成docker镜像并推送到镜像仓库 一、环境配置 java、maven 、docker 安装及环境变量配置 &nbsp;&nbsp;&nbsp;&nbsp;1. maven配置文件修改 &lt;server...
  • 本篇就来简单的介绍一下将本地的文件(Jar)推送到搭建好的 nexus 服务中心库中。  nexus服务配置  在搭建号nexus服务中,有两个类型的库可以推送,分别是releases和snapshots,在本地搭建的nexus服务中,找到这...
  • 首先准备好需要转成maven依赖的jar. 2&gt;.点击下图按钮: 3&gt;.在弹框中按下图输入: 代码如下: mvn install:install-file -Dfile=jar地址 -DgroupId=自行命名groupId -DartifactId=自行命名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 514,388
精华内容 205,755
关键字:

包送到