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从入门到实践】

  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/weiqinshian/p/6679124.html
Copyright © 2011-2022 走看看