Docker工作流

file

1.工作流

  1. 开发应用
  2. 编写Dockerfile
  3. 构建Docker镜像
  4. 运行Docker容器
  5. 测试应用
  6. 发布镜像到Hub
  7. 迭代更新镜像

2.开发应用

首先你需要创建一个应用,这个应用可以是后端应用或者前端应用,任何语言都可以。
比如:我使用IDEA 创建一个Java后端应用,基于Maven构建,工程结构如下:

file

3.编写Dockerfile

基于自己的工程来编写Dockerfile, 比如:我的是工程是基于JDK11的Java应用,并且应用打包为Jar包,我编写了一个两阶段的Dockerfile,第一个阶段为mvn构建,第二个阶段基于maven的jar包打包为docker镜像,Dockerfile文件内容如下:

# maven打包时基础镜像为maven
FROM maven:3.6-jdk-11 as build
# 工作目录,容器运行时默认在/app目录下
WORKDIR /app
# 将maven构建拷贝
COPY . .
# 执行mvn打包
RUN mvn clean package

# 基础镜像(运行时)
FROM openjdk:11
# 设置时区为东八区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

# 设置工作目录
WORKDIR /app

# 从build阶段拷贝jar包
COPY --from=build /app/target/sales-product.jar /app/sales-product.jar

# 设置容器启动时的命令
CMD java -jar -Xms128M -Xmx256M /app/sales-product.jar

COPY

4.构建Docker镜像

我们需要将Dockerfile定义的步骤进行docker构建打包为docker镜像,打包镜像时我们需要使用Docker CLI或者一个构建工具(Docker Compose)或者CI/CD系统来基于Dockerfile构建Docker镜像。

打包出来的Docker镜像包括了应用代码,运行时环境和任何依赖的库或者模块。Docker构建命令如下(以Docker CLI为例):

docker build . -t sales-order:latest
# or
docker build . -t sales-order
# or
docker build . -t saels-order:v1.0.0

COPY

5.运行Docker容器

一旦你的Docker镜像打包完成,那么就可以基于这个Docker镜像创建并运行Docker容器。
Docker容器是Docker镜像的实例,关系就像是程序和进程一样,Docker镜像是一个静态的程序,当基于这个镜像运行时就称为容器。
你可以将容器运行到不同的环境中,比如:开发环境,测试环境和生产环境,这些环境都可以使用同一个镜像。
运行容器有多种方式,Docker CLI, docker-compose, docker-swarm, K8s或者其他Docker容器编排平台。我们这里以Docker CLI和Docker-Compose为例来演示如何启动容器:
Docker CLI方式:

docker container run -d -p 8080:8080 sales-order

COPY

Docker-Compose方式(需要安装Docker-compose):

version: '3.7'
services:
  sales-product:
    container_name: sales-product
    restart: always
    image: sales-product:latest
    ports:
      - "60004:60004"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    logging:
      driver: "json-file"
      options:
        max-size: "512m"
    extra_hosts: 
      - "sales-order:192.168.1.83"
    environment:
      - SPRING_PROFILES_ACTIVE=dev
    command: ['java','-jar','-Xms256M','-Xmx256M','sales-product.jar']  

COPY

6.测试应用

一般Docker容器成功启动后,我们就可以开始测试我们的应用了

7.发布镜像到Hub

Docker镜像一般需要发布到一个Registry以达到镜像共享的目的,这些Registry像Docker Hub或者私有Registry。一般开源或开放的项目会选择将镜像发布到Docker Hub或者将自己的Registry部分开放以共享镜像;而私有业务镜像通常只发布到私有Registry。将镜像推送到Registry我们通常使用Docker CLI或者其他客户端工具进行推送,我们以Docker CLI为例:

docker push sales-order:latest

docker push your_private_registry_domain/sales-order:latest

COPY

迭代更新镜像

在该应用软件生命周期结束前,我们一般都会一直维护应用,不断发布新版本应用,同时我们的镜像也在不断地根据应用版本的更新而更新,这样就很方面的帮助你解决新版本应用发布的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/508390.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用Typora+picgo+cloudflare+Telegraph-image的免费,无需服务器,无限空间的图床搭建(避坑指南)

用TyporapicgocloudflareTelegraph-image的免费,无需服务器,无限空间的图床搭建(避坑指南) 前提:有github何cloudflare (没有的话注册也很快) 首先,是一个别人写的详细的配置流程,傻瓜式教程&am…

spring boot自动配置原理-怎样回答这个问题

首先我们说一下自动配置的概念。 自动配置:遵循约定大约配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入到ioc容器 例子 程序引入spring-boot-starter-web 起步依赖,启动后,会自动往ioc容器中注入…

云计算面临的威胁

目录 一、概述 二、威胁建模分析 2.1 威胁建模的概念 2.2 威胁建模起到的作用 2.3 威胁建模的流程 2.3.1 威胁建模流程图 2.3.2 威胁建模流程内容 2.3.2.1 绘制数据流图 2.3.2.2 威胁识别与分析 2.3.2.2.1 STRIDE威胁分析方法论 2.3.2.3 制定消减措施 2.3.2.3.1 消减…

UDE-12154: 操作产生了 ORACLE 错误 12154ORA-12154: TNS: 无法解析指定的连接标识符

在连接远程数据库时出的错 加个ip地址咯 原本: 代码: expdp TEST/TESTORCLDB schemasTEST directoryexportW dumpfileexport_data.dmp logfileexport_log.log 解决问题: 代码: expdp TEST/TEST*.*.*.*/ORCLDB schemasTEST dir…

FMEA引领智能家居安全革新,打造无忧智能生活新纪元!

在智能家居日益普及的今天,如何确保家居安全成为消费者关注的焦点。本文将探讨如何通过FMEA(故障模式与影响分析)这一强大的质量管理工具,为智能家居赋能,打造安全无忧的智能生活新体验。 一、FMEA在智能家居领域的应用…

使用Docker快速搭建Kafka

前言 今天讲下如何使用Docker快速搭建kafka。 前期准备,需要安装好docker、docker-compose。 一、安装Kafka 1、创建Kafka目录,执行如下命令。 mkdir -p /docker/kafka/ cd /docker/kafka/ 2、编写yaml文件,内容如下。 vim docker-com…

【面试八股总结】超文本传输协议HTTP(二)

一、HTTP缓存技术 将资源(如网页、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,而不必重新从服务器下载资源。这有助于减少网络延迟,提高页面加载速度,并减轻…

算法2.7:排序算法之间的比较

排序算法间的比较 比较元素: 1,平均时间复杂度 2,最好情况 3,最坏情况 4,空间复杂度 5,排序方式 6,稳定性 部分术语解释: 1,稳定:如果a本来在b前面,ab,排序之后a仍然在b前面 2,不稳定:即!第一条 3,内排序:所有排序操作都在内存中完成 4,外排序:需要借助外界的存储空…

电脑win10系统更新后开机很慢,更新win10后电脑开机怎么变慢了

很多用户反映,更新win10后电脑开机怎么变慢了呢?现在动不动就要30几秒,以前都是秒开机的,要怎么设置才能提高开机速度?小伙伴们别着急,主要原因可能是关机设置中没有勾选启用快速启动,或者是开机启动设置的问题&…

缓存(反向代理)服务器-varnish

varnish简介: varnish是一款高性能且开源的反向代理服务器和HTTP加速器,(其实就是带缓存的反向代理服务器)它可以把整个HTTP响应内容缓存到内存或文件中,从而提高web服务器器的响应速度。 与传统的squid相比&#xff0…

NBU备份oracle详细配置文档(含常见报错处理方法)

​前提 NBU master和media服务器已经配置OK,现在需要oracle主机安装agent并配置备份任务。 NBU master版本8.3.0.2 Oracle OS版本redhat 6.8 Oracle版本 11.2.0.4 1.Oracle 安装agent 下载安装档 https://www.veritas.com/content/support/zh_CN 选择…

【opencv】教程代码 —xfeatures2D 使用LATCH算法提取特征描述子的图像特征匹配程序...

LATCH_match.cpp 这段代码是使用C以及OpenCV库来实现图像特征匹配的程序。它主要包括了使用ORB算法检测关键点并使用LATCH算法提取特征描述子的步骤,之后使用暴力匹配方法(Brute-Force Matching)和比率测试来筛选出好的匹配点,最后…

蓝桥杯单片机速成1--138锁存器

一、原理图 大家都知道,蓝桥杯单片机比赛用的板子的原理就是51的原理,但二者唯一的区别就是这个74HC138锁存器,因为比赛用板的LED,数码管,蜂鸣器和继电器都在P0口上,所以为了防止错乱,加了一个…

本地运行github上下载的项目--接Git入门篇

1.了解项目 这是一个基于Spring Boot 和 Mybatis Plus 构建的Java项目,很经典的外卖项目,参考b站的黑马瑞吉外卖。 2.构建项目 SpringBoot项目,首先下载一些常见的项目要求的组件。然后配置如下: 看README,在阅读该…

LeetCode-48. 旋转图像【数组 数学 矩阵】

LeetCode-48. 旋转图像【数组 数学 矩阵】 题目描述:解题思路一:一行代码!Python zip函数图一乐【zip函数实现主对角线翻转,[::-1]实现垂直翻转】解题思路二:其实我们也可以先水平轴翻转,让后主对角线翻转。…

xss-lab 1-10关过关记录

前言 最近发现xss学的知识点都忘干净了,来打一打靶子并且记录一下这些过关经历。 level1 特性: 1.get型传参 2.无任何过滤 过关操作: 直接构造payload传参过关 level2 get型传参 我们在输入框中输入payload发现并没有弹窗。 查看网页…

electron 打不同环境的包

我用的打包工具: electron-builder 1、在package.json 文件的同级下创建2个js文件 electron-builder-test.config.js electron-builder.config.js electron-builder-test.config.js const basejson require(./electron-builder.config.js); module.exports {extraMetada…

安全防御产品—锐安盾重磅上线,助力更安全、更流畅的业务体验

在互联网时代,互联网技术蓬勃发展,然而,随之而来的网络安全问题也备受关注。诸如DDoS攻击、CC攻击、常见Web攻击等攻击手段突如其来,导致企业业务中断,严重影响企业业务正常运行。对此,锐成云重磅推出安全防…

华为配置防止ARP中间人攻击实验

配置防止ARP中间人攻击实验 组网图形 图1 配置防止ARP中间人攻击组网图 动态ARP检测简介配置注意事项组网需求配置思路操作步骤配置文件 动态ARP检测简介 ARP(Address Resolution Protocol)安全是针对ARP攻击的一种安全特性,它通过一系列…

无代理方式的网络准入技术:保护泛终端企业网络安全的未来

云计算、大数据、物联网、移动化办公等技术的普及,打破了传统局域网的边界,通过各种方式连接到企业网络中的设备越来越多,如BYOD、IoT、OT等。企业在享受新技术带来的便利之际,也面临着更加多元化的安全威胁,如勒索病毒…