Dockerfile文件详细教程

写在前面

Dockerfile是用来构建镜像的,他实际上就是把在linux下的命令操作写到了Dockerfile中,通过Dockerfile去执行设置好的操作命令,保证通过Dockerfile的构建镜像是一致的。

实战分析

该例子来自于 chromium 项目
主要干的事情:

  1. 来指定用哪个镜像;
  2. 安装一些编译需要的环境:C++编译环境,Java环境等
# This Dockerfile specifies the recipe for creating an image for the tests
# to run in.
#
# We install as many test dependencies here as we can, because these setup
# steps can be cached.  They do *not* run every time we run the build.
# The Docker image is only rebuilt when the Dockerfile (ie. this file)
# changes.# 指定了使用什么镜像 debian
# Base Dockerfile for gRPC dev images
FROM debian:latest# 添加软件源
# Apt source for old Python versions.
RUN echo 'deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu trusty main' > /etc/apt/sources.list.d/deadsnakes.list && \apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C# Apt source for Oracle Java.
RUN echo 'deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' > /etc/apt/sources.list.d/webupd8team-java-trusty.list && \apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886 && \echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections# Apt source for Mono
RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list && \echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list && \apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF# Apt source for php
RUN echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu trusty main" | tee /etc/apt/sources.list.d/various-php.list && \apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F4FCBB07# Install dotnet SDK based on https://www.microsoft.com/net/core#debian
# (Ubuntu instructions need apt to support https)
RUN apt-get update && apt-get install -y --force-yes curl libunwind8 gettext && \curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=847105 &&  \mkdir -p /opt/dotnet && tar zxf dotnet.tar.gz -C /opt/dotnet && \ln -s /opt/dotnet/dotnet /usr/local/bin# Install dependencies.  We start with the basic ones require to build protoc
# and the C++ build
RUN apt-get clean && apt-get update && apt-get install -y --force-yes \autoconf \autotools-dev \build-essential \bzip2 \ccache \curl \gcc \git \libc6 \libc6-dbg \libc6-dev \libgtest-dev \libtool \make \parallel \time \wget \# -- For csharp --mono-devel \referenceassemblies-pcl \nunit \# -- For all Java builds -- \maven \# -- For java_jdk6 -- \#   oops! not in jessie. too old? openjdk-6-jdk \# -- For java_jdk7 -- \openjdk-7-jdk \# -- For java_oracle7 -- \oracle-java7-installer \# -- For python / python_cpp -- \python-setuptools \python-pip \python-dev \python2.6-dev \python3.3-dev \python3.4-dev \# -- For Ruby --ruby \# -- For C++ benchmarks --cmake \# -- For PHP --php5.6     \php5.6-dev \php5.6-xml \php7.0     \ph

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Python中的元类

Python元类:metaclass 1、类也是对象2、什么是元类3、__metaclass__属性4、自定义元类5、为什么要用metaclass类而不是函数6、究竟为什么要使用元类7、结语 声明: 本文主要参考文章:https://stackoverflow.com/questions/100003/what-are-met…

安卓逆向之雷电模拟器中控

一, 雷电模拟器 安装使用 官方地址: https://www.ldmnq.com ,官方论坛 https://www.ldmnq.com/forum/ . 有一个多开管理器,还有就是设置手机的参数比较关键。 二,雷电模拟器开启面具,安装LSP。 设置root 权限。

【数据结构实战项目】C语言实现数据结构顺序表万字详解(附完整运行代码)

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个顺序表: 该顺序表使用动态内存分配,可以用来存储任意数量的同类型数据. 顺序表需要包含三个要素:存储数据的数组arr,顺序表…

【操作系统】848真题总结(20-23)

【操作系统】848真题答案及总结(20-23) 文章目录 【操作系统】848真题答案及总结(20-23)写在前面:选择题:2020202120222023 填空题:2020202120222023 判断题:2020202120222023 简答题&#xff1…

Python程序设计期末复习笔记

文章目录 一、数据存储1.1 倒计时1.2 os库1.3 字符串操作1.4 文件操作1.5 列表操作1.6 元组1.7 字典 二、文本处理及可视化2.1 jieba分词2.2 集合操作2.3 pdf文件读取2.4 参数传递2.5 变量作用域 三、数据处理分析3.1 Sumpy3.2 Matplotlib3.3 Numpy 四、Pandas4.1 索引操作4.2 …

UE5.3启动C++项目报错崩溃

最近尝试用C来练习,碰到一个启动崩溃的事情 按照官方给的步骤做的:官方链接 结果是自定义的Character的问题,在自定义Character的构造函数里调用了: check(GEngine ! nullptr); GEngine->AddOnScreenDebugMessage(-1, 5, FCol…

技术视角下的跑腿小程序开发:关键挑战和解决方案

跑腿小程序作为连接服务提供者和用户的桥梁,面临着诸多技术挑战。本文将聚焦于技术层面的关键挑战,并提供解决方案,以帮助开发者应对技术上的复杂问题。 1. 实时性与性能挑战 挑战: 跑腿小程序需要实时地匹配订单、更新状态和提…

40基于MATLAB,使用模板匹配法实现车牌的识别。

基于MATLAB,使用模板匹配法实现车牌的识别。具体包括将原图灰度化,边缘检测,腐蚀操作,车牌区域定位,车牌区域矫正,二值化,均值滤波,切割,字符匹配,最终显示车…

小程序request请求封装

以上为本人的项目目录 1.首先在utils中创建request.js文件封装request请求,此封装带上了token,每次请求都会自带token,需要你从后端获取后利用wx.setStorageSync(token,返回的token),不使用的话就是空。 直接复制即可,需要改一下…

(三)库存超卖案例实战——使用redis分布式锁解决“超卖”问题

前言 在上一节内容中我们介绍了如何使用mysql数据库的传统锁(行锁、乐观锁、悲观锁)来解决并发访问导致的“超卖问题”。虽然mysql的传统锁能够很好的解决并发访问的问题,但是从性能上来讲,mysql的表现似乎并不那么优秀&#xff…

vue3后台管理系统之跨域代理

vite.config.js中 server: {port: 5002,host: true, //0.0.0.0open: false,strictPort: true,proxy: {// 请求前缀/api,只有加了/api前缀的请求才会走代理(前端自定义)/api: {target: http://127.0.0.1:8000,// 获取服务器地址的设置changeOrigin: true,// 路径重写…

判断时间是否连续

判断多个时间是否排序 思路当多参的时间传过来,先排序,然后遍历集合对比是否连续的只要一处不是连续的就直接返回false //判断时间是否连续的public static Boolean verificationDate(Date... dates) throws ParseException {boolean flag true;SortedSet<Date> setDat…

AMD HIP并行编程语言及其矢量相加实例——一文带你快速入门

✍️写在前面&#xff1a;随着计算的应用场景变得日益复杂多样&#xff0c;为了跟上人工智能算法对算力的需求&#xff0c;GPU硬件架构快速走向多样化&#xff0c;GPU生产厂家众多&#xff0c;且在商业和市场等因素的影响下&#xff0c;GPU通用计算编程模型也日益多元化。因此&…

Gateway一个诡异问题处理过程

一、前言 我们搭好了网关和一个基础微服务&#xff08;含用户体系、门店服务、商品服务、客户服务&#xff09;&#xff0c;然后用APIfox测试过程中发现通过网关入口请求某些接口&#xff0c;一段时间后返回错误&#xff0c;查看系统日志发现除了报There is no session with i…

(Java)泛型总结

泛型类 public class Student<E> {private E a;public Student(E a){this.aa;}public void show(){System.out.println(a);} } 泛型方法 public <E> void show(E a){System.out.println(a);} 泛型接口 public interface Inter <T>{void show(T a); } 类…

流程封装与基于加密接口的测试用例设计

接口测试仅仅掌握 Requests 或者其他一些功能强大的库的用法&#xff0c;是远远不够的&#xff0c;还需要具备能根据公司的业务流程以及需求去定制化一个接口自动化测试框架的能力。所以&#xff0c;接下来&#xff0c;我们主要介绍下接口测试用例分析以及通用的流程封装是如何…

USACO12OPEN Balanced Cow Subsets G(meet in the middle)

洛谷P3067 [USACO12OPEN] Balanced Cow Subsets G 题目大意 我们定义一个奶牛集合 S S S是平衡的&#xff0c;当且仅当满足以下两个条件&#xff1a; S S S非空 S S S可以被划分为两个集合 A , B A,B A,B&#xff0c;满足 A A A里的奶牛产量之和等于 B B B里的牛奶产量之和 …

并发编程 -常用并发设计模式

1. 优雅终止线程的设计模式 思考&#xff1a;在一个线程 T1 中如何优雅的终止线程 T2&#xff1f; 错误思路1&#xff1a;使用线程对象的 stop() 方法停止线程 stop 方法会真正杀死线程&#xff0c;如果这时线程锁住了共享资源&#xff0c;那么当它被杀死后就再也没有机会释 …

记一些oracle的踩坑记录

这里写自定义目录标题 concat只能拼接2个参数批量插入时&#xff0c; ORA-00926: 缺失 VALUES 关键字 concat只能拼接2个参数 公司脚手架拉下来的有拼接三个参数的&#xff0c;如concat("%", #{keyowrd}, "%)执行到相关语句会报错。需要写成concat(concat(&quo…

Python selenium元素的定位

视频版教程&#xff1a;一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 对象的定位应该是自动化测试的核心&#xff0c;要想操作一个对象&#xff0c;首先应该识别这个对象。一个对象就是一个人一样&#xff0c;他 会有各种的特征&#xff08;属性&…