zoukankan      html  css  js  c++  java
  • 通过dockerfile构建微服务的镜像发布

    本文为博主原创,未经允许不得转载:

    目录:

      1. dockerfile 的文件使用讲解

      2. dockerfile 常用指令

      3. 通过dockerfile 进行微服务发布

     1. dockerfile 的文件使用

      Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节.

      编写一个最简单的dockerfile文件。

      1.1 新建文件夹app,在app目录下创建一个名为dockerfile的文件,在文件增加以下内容

    FROM nginx
    RUN echo '<h1>This is My Nginx!!!</h1>' > /usr/share/nginx/html/index.html

      其中的 FORMRUN都是 Dockerfile的指令。 FROM指令用于指定基础镜像, RUN指令用于执行命令。

      1.2 Dockerfile所在路径执行以下命令构建镜像

     docker build -t nginx:myself .

      -t指定镜像名字,命令最后的点(.)表示Dockerfile文件所在路径

      1.3 使用dockerfile镜像启动一个容器

    docker run -d -p 92:80 nginx:myself

      1.4 通过 http://Docker宿主机IP:92/,可看到nginx首页。

    2.使用docker构建微服务镜像

      以nacos为例,将该微服务的可运行的jar包构建成微服务镜像。

      2.1 jar包上传linux服务器/app/nacos目录,在jar包所在目录创建名为Dockerfile的文件

      2.2 Dockerfile中添加以下内容

    # 基于哪个镜像
    From java:8
    # 将本地文件夹挂载到当前容器
    VOLUME /tmp
    # 复制文件到容器
    ADD microservice-nacos-server-0.0.1-SNAPSHOT.jar /app.jar
    # 声明需要暴露的端口
    EXPOSE 8848
    # 配置容器启动后执行的命令
    ENTRYPOINT ["java","-jar","/app.jar"]

      2.3 使用docker build命令构建镜像

    docker build -t microservice-nacos-server:0.0.1 .

      # 格式: docker build -t 镜像名称:标签 Dockerfile的相对位置

      2.4 启动镜像,加-d可在后台启动

    docker run -p 8848:8848 microservice-nacos-server:0.0.1

      2.5 访问http://Docker宿主机IP:8848/,可正常显示 nacos 首页

    3.DockerFile常用指令

    命令

    用途

    FROM

    基础镜像文件

    RUN

    构建镜像阶段执行命令

    ADD <src> <dest>

    添加文件,从src目录复制文件到容器的dest,其中 src可以是 Dockerfile所在目录的相对路径,也可以是一个 URL,还可以是一个压缩包

    COPY

    拷贝文件,和ADD命令类似,但不支持URL和压缩包

    CMD

    容器启动后执行命令

    EXPOSE

    声明容器在运行时对外提供的服务端口

    WORKDIR

    指定容器工作路径

    ENV

    指定环境变量

    ENTRYPOINT

    容器入口, ENTRYPOINTCMD指令的目的一样,都是指定 Docker容器启动时执行的命令,可多次设置,但只有最后一个有效。

    USER

    该指令用于设置启动镜像时的用户或者 UID,写在该指令后的 RUNCMD以及 ENTRYPOINT指令都将使用该用户执行命令。

    VOLUME

    指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile中使用该指令。格式为: VOLUME["/data"]

      注意:RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。

      注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令

  • 相关阅读:
    CEF3研究(三)
    [你必须知道的.NET]第二十一回:认识全面的null
    [你必须知道的.NET]第二十回:学习方法论
    [你必须知道的.NET]第十九回:对象创建始末(下)
    [你必须知道的.NET]第十八回:对象创建始末(上)
    [你必须知道的.NET]第十七回:貌合神离:覆写和重载
    纯js的N级联动列表框 —— 基于jQuery
    基于存储过程的MVC开源分页控件
    【程序7】统计出所输入字符中英文字母、空格、数字和其它字符的个数
    【程序6】 求最大公约数和最小公倍数
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/15306803.html
Copyright © 2011-2022 走看看