通过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
其中的 FORM、 RUN都是 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 |
容器入口, ENTRYPOINT和 CMD指令的目的一样,都是指定 Docker容器启动时执行的命令,可多次设置,但只有最后一个有效。 |
|
USER |
该指令用于设置启动镜像时的用户或者 UID,写在该指令后的 RUN、 CMD以及 ENTRYPOINT指令都将使用该用户执行命令。 |
|
VOLUME |
指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile中使用该指令。格式为: VOLUME["/data"]。 |
注意:RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。
注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令
通过dockerfile构建微服务的镜像发布的更多相关文章
- 基于jib-maven-plugin快速构建微服务docker镜像
一.说明 本文介绍基于 Maven 插件 jib-maven-plugin 实现快速构建 Spring Boot 程序镜像,并推送到远程仓库中,且 无需安装 Docker 环境 . Jib 是 Goo ...
- 《基于.NET Core构建微服务》系列文章(更新至第6篇,最新第7篇,已发布主页候选区)
原文:Building Microservices On .NET Core – Part 1 The Plan 时间:2019年1月14日 作者:Wojciech Suwała, Head Arch ...
- 如何使用 Java 构建微服务?
[编者按]微服务背后的大理念是将大型.复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化.本文主要介绍了利用 Java 生态系统构建微服务的多种方法,并分析了每种方法的利弊 ...
- 使用 Spring Cloud 和 Docker 构建微服务架构
如何使用Spring Boot.Spring Cloud.Docker和Netflix的一些开源工具来构建一个微服务架构. 本文通过使用Spring Boot.Spring Cloud和Docker构 ...
- 通过GeneXus如何快速构建微服务架构
概览 “微服务”是一个非常广泛的话题,在过去几年里,市面上存在着各种不同的定义. 虽然对这种架构方式没有一个非常精确的定义,但仍然有一些概念具有代表性. 微服务有着许多围绕业务能力.自动化部署.终端智 ...
- K8S+Jenkins自动化构建微服务项目(后续)
因为之前写过基于K8S部署jenkins master/slave平台,在这个的基础上构建微服务到K8S集群中 Jenkins-slave构建微服务项目到K8S集群 1.微服务项目上传到git仓库 这 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- [译]Spring构建微服务
此文为译文,原文地址 介绍 本文通过一个使用Spring.Spring Boot和Spring Cloud的小例子来说明如何构建微服务系统. 我们可以通过数个微服务组合成一个大型系统. 我们可以想象下 ...
- Chris Richardson微服务翻译:构建微服务之微服务架构的进程通讯
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...
- 手把手教你用Spring Cloud和Docker构建微服务
什么是Spring Cloud? Spring Cloud 是Pivotal提供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接 ...
随机推荐
- 华企盾DSC发送白名单提示“解密发送失败”(被中转服务器判定为垃圾邮箱)
解决方法:用DebugView监控,发现含有550错误,说明中转服务器被判定为垃圾邮箱,换一个中转邮箱或者设置为无中转发送 还有一种可能:邮箱设置了收到邮箱后自动删除 DebugView中显示上图 ...
- 在macOS中搭建.NET MAUI开发环境
@ 目录 准备 安装扩展 安装 .NET 安装工作负载 安装 Xcode 命令行工具 调试安卓应用 安装 JDK 安装 Android SDK 安装 Android 模拟器 安装模拟器 安装镜像 创建 ...
- manjaro下使用deepin-wine5解决wechat无法发送图片的问题
问题 在manjaro操作系统下,使用了deepin-wine安装wechat.但是,wechat运行无法发送较大图片且截图功能也有问题. 解决 在参考了github之后,我找到了解决方案. 附上链接 ...
- 【MySql】数据库_MySql基础
yum install mysql mysql -u root -p 创建数据库 create database 数据库名; 查看所有数据仓库 show databases; 删除数据库 drop d ...
- 使用IO流写一个随机点名程序
前言 最近学习了关于IO流的一些知识点,但是应用还不够,所以今天做个简单案例: 随机创建名字导入文件中: package ioandcollection; import java.io.Buffere ...
- Golang实现JAVA虚拟机-解析class文件
原文链接:https://gaoyubo.cn/blogs/de1bedad.html 前言 所需前置知识为:JAVA语言.JVM知识.Go笔记 对应项目:jvmgo 一.准备环境 操作系统:Wind ...
- 超酷! Atlas给黑白视频“上色”
摘要:随着人工智能技术发展,AI已经能够为黑白的老视频 "上色",重现昔日的情景,让黑白图像变得栩栩如生. 怎么样,是不是看起来题目跟昨天的博客名称差不多?昨天是图片,今天是视频. ...
- 从零开始学习python | 实例讲解如何制作Python模式程序
摘要:在本文中,我们将学习python中的各种模式程序. Python编程语言很容易学习.易于语法实现的各种库使其脱颖而出,这是它成为本世纪最流行的编程语言的众多原因之一.虽然学习很容易,但访问员通常 ...
- SQL操作:WITH表达式及其应用
摘要:本文将围绕WITH,以及更高阶的WITH RECURSIVE表达式介绍其语法特征和具体使用规范,以及在GaussDB(DWS)中如何进行WITH表达式的调优 本文分享自华为云社区<Gaus ...
- CISO 需考虑的五项 Kubernetes 安全措施
随着企业对软件开发的安全意识提高,开发和运维环节中各个团队也开始将安全嵌入他们正在使用或处理的平台或应用程序架构中.不同于各团队把对安全的关注放在自己所处理的环节,首席信息安全官(CISO)需要把握和 ...