zoukankan      html  css  js  c++  java
  • springboot 项目 docker化部署

    最近公司项目需要docker化,项目所使用的框架是springboot,linux环境。第一次接触docker化方面的技术。做的时候,所接触的新知识比较多,留下此文,以便以后用到的时候快速入手。

    修改maven  pom.xml 文件

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.7</java.version>
          <project.codeName>projectName</project.codeName>
          <project.repository>docker.xw.com.cn</project.repository>
          <project.moduleName>microdocc</project.moduleName>
    </properties>

     

    引入docker-maven-plugin插件

    <plugin>
                 <groupId>com.spotify</groupId>
                 <artifactId>docker-maven-plugin</artifactId>
                 <version>0.4.11</version>
                 <configuration>
                 <serverId>xw-docker-registry</serverId>
                     <imageName>${project.repository}/${project.codeName}/${project.moduleName}</imageName><!-- 镜像名称 -->
                             <forceTags>true</forceTags>
                     <imageTags>
                         <imageTag>${project.version}</imageTag>
                         <imageTag>latest</imageTag>
                     </imageTags>
                     <dockerDirectory>src/main/docker</dockerDirectory><!-- Dockerfile文件地址 -->
                     <resources>
                         <resource>
                             <targetPath>/</targetPath>
                             <directory>${project.build.directory}</directory><!--项目构建输出目录/ -->
                             <include>${project.build.finalName}.jar</include><!--打包出来的jar名称-->
                         </resource>
                     </resources>
                 </configuration>
             </plugin>

    编写Dockerfile文件

     

    FROM jdk1.7.0_25
     
    # Set the timezone.
    RUN echo "Asia/Shanghai" > /etc/timezone
    RUN dpkg-reconfigure -f noninteractive tzdata
     
    # Make logs dir
    RUN mkdir -p /opt/file/logs
     
    # Add the jar and run
    ADD ifle.jar /opt/file/ifle.jar
    WORKDIR /opt/file
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","file.jar"]

    Dockerfile 文件释意


    使用 # 来注释
    FROM 指令告诉 Docker 使用哪个镜像作为基础

    RUN 开头的指令会在创建中运行, 比如安装一个软件包, 在这里使用 apt-get 来安装了一些软件

     

    RUN

    格式为 RUN <command> 或 RUN ["executable", "param1", "param2"] 。
    前者将在 shell 终端中运行命令, 即 /bin/sh -c ;后者则使用 exec 执行。 指定使用其它终端可以通过
    第二种方式实现, 例如 RUN ["/bin/bash", "-c", "echo hello"] 。
    每条 RUN 指令将在当前镜像基础上执行指定命令, 并提交为新的镜像。 当命令较长时可以使用 来换
    行。

     

    ADD

    格式为 ADD <src> <dest> 。
    该命令将复制指定的 <src> 到容器中的 <dest> 。 其中 <src> 可以是Dockerfile所在目录的一个相对路
    径;也可以是一个 URL;还可以是一个 tar 文件( 自动解压为目录)

    WORKDIR

    WORKDIR 为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录。

    ENTRYPOINT

    两种格式:
    ENTRYPOINT ["executable", "param1", "param2"]
    ENTRYPOINT command param1 param2 ( shell中执行) 。
    配置容器启动后执行的命令, 并且不可被 docker run 提供的参数覆盖。
    每个 Dockerfile 中只能有一个 ENTRYPOINT , 当指定多个时, 只有最后一个起效

    执行maven命令生成镜像

    mvn clean package docker:build -Ptest -DskipTests=true  -DpushImageTag

    docker images 命令查看生产的镜像

     

     

    启动docker 镜像生成 容器

    执行如下命令:

    docker run --name  projectName-1.0.5 -p  9006:8080  -d  -v /app/conf/projectName/application.properties:/opt/test-Project/application.properties -v /app/logs/projectName3:/tmp/logs/projectName   docker.xw.com.cn/projectName/microdocc   /bin/bash

    解析docker run 命令

    使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令, 可以执行:runoob@runoob:~$ docker run -it nginx:latest /bin/bash

     ==========================================================================================

    使用 hostPort:containerPort 格式本地的 5001 端口映射到容器的 5000 端口, 可以执行:$ sudo docker run -d -p 5001:5000 training/webapp python app.py

    ==========================================================================================

    使用 -v 标记也可以指定挂载一个本地主机的目录到容器中去。

     ==========================================================================================

    $ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app

    上面的命令加载主机的 /src/webapp 目录到容器的 /opt/webapp 目录。 这个功能在进行测试的时候十
    分方便, 比如用户可以放置一些程序到本地目录中, 来查看容器是否正常工作。

     ==========================================================================================

    在使用 -d 参数时, 容器启动后会进入后台。

      ==========================================================================================

    标红的参数为,镜像的 仓库全名。 --name 后的参数为 ,运行容器的名称,新起的名字。

    参考:【Docker从入门到实践】

  • 相关阅读:
    maven项目的导包问题,已经加载jar包了可是idea检测不到
    spark MLlib矩阵四则运算,线性代数
    maven spark Scala idea搭建maven项目的 pom.xml文件配置
    tensorflow2.0 numpy.ndarray 与tenor直接互转
    TensorFlow2.0矩阵与向量的加减乘
    Ubuntu14.04下Nginx反向代理Odoo域名
    Geforce experience报错:something went wrong try restarting geforce
    github的代码上传成功但是不显示绿格子(一直拖....心痛的教训.....)
    mapper文件提示:No data sources are configured to run this sql
    Pycharm中SQL语句提示SQL Dialect is Not Configured
  • 原文地址:https://www.cnblogs.com/weiqinshian/p/6679124.html
Copyright © 2011-2022 走看看