docker build Dockfile ---- RUN 中 cd 切換路徑失敗 的原因、解決

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

1. 我只是想 直接切換到對應目錄下 執行后續命令。

?????寫法如下:

FROM openjdk:8-jre-alpineMAINTAINER JiangYuRUN echo `pwd`
RUN cd ~RUN echo `pwd`RUN cd /chengxu/rocketmq/rocketmq-all-4.2.0
RUN    mvn -Prelease-all -DskipTests clean install -U
RUN    cd /distribution/target/apache-rocketmq...

兩次輸出的當前路徑都是 / , cd ~ 顯然沒有達到我想要的效果 。

?

2. 使用 WORKDIR 指定工作目錄

格式為?WORKDIR <工作目錄路徑>

例如:

# 設置環境變量 url
ENV url /root/jiangyu/projects/springCloud/clientOne/springcloud-clientOne# 讀取 url 中的目錄,并切換工作空間到對應目錄
WORKDIR ${url}   # 上面寫法等價于:
WORKDIR /root/jiangyu/projects/springCloud/clientOne/springcloud-clientOne

?

WORKDIR?指定工作目錄(或稱當前目錄),以后各層的當前目錄就被改為指定的目錄,如該目錄不存在,WORKDIR?會自行創建。

?Dockerfile?不能等同于 Shell 腳本來書寫,下面是錯誤寫法:

RUN cd /app
RUN echo "hello" > world.txt

此?Dockerfile?構建鏡像,會發現找不到?/app/world.txt?文件,或者其內容不是?hello?

在 Shell 中,連續兩行是同一個進程執行環境,因此前一個命令修改的內存狀態,會直接影響后一個命令;

而在?Dockerfile?中,這兩行?RUN?命令的執行環境根本不同,是兩個完全不同的容器。

?

每一個?RUN?都會啟動一個容器、執行命令、然后提交存儲層文件變更。

第一層?RUN cd /app?的執行僅僅是當前進程的工作目錄變更,一個內存上的變化而已,其結果不會造成任何文件變更。

第二層啟動的是一個全新的容器,跟第一層的容器更完全沒關系,自然不可能繼承前一層構建過程中的內存變化。

因此如果需要改變以后各層的工作目錄的位置,那么應該使用?WORKDIR?指令。

?

PS:第 2 點參見:https://yeasy.gitbooks.io/docker_practice/image/dockerfile/workdir.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448738.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448738.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

米爾電子Zynq UltraScale MPSoC核心板資料介紹

米爾Zynq UltraScale MPSoC核心板&#xff08;MYC-CZU3EG&#xff09;是采用Xilinx新一代Zynq處理器。該核心板是業界最小尺寸Zynq UltraScale 核心板&#xff0c;采用16納米制程&#xff0c;相比Znyq7000系列每瓦性能提升5倍&#xff0c;且單芯片融合4核心Cortex-A53&#xff…

幸福秘訣 男女必須要看哦

女人說&#xff1a;這一輩子最大的成功是什么?我認為是找到一個真正疼自己的老公,有了老公的支持才可以把事業做得有聲有色,有一個幸福的家和一個可愛的寶寶。 男人說&#xff1a;我的成功是在我的人生之中&#xff0c;是妻子和我形影相隨&#xff0c;朝夕相伴。她是我身邊…

解決:If the number of processors is expected to increase from one, then you should configure the numbe

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 按官方說明用 docker 部署 rocketmq ,啟動 broker 報錯&#xff1a; OpenJDK 64-Bit Server VM warning: If the number of processo…

JAVA-緩存機制

本地緩存 繼承AbstractBaseLocalCache&#xff0c;并實現相應的抽象方法&#xff1b;適用于單實例項目或不會經常變化的數據&#xff1b;代碼示例&#xff1a;/*** 倉庫信息緩存類*/ Service public class WarehouseCache extends AbstractBaseLocalCache<Long, Warehouse&g…

騰訊QQ團隊開源分布式后臺毫秒服務引擎全解析:引擎架構、RPC、灰度……

騰訊QQ團隊將于12月4日開源一個服務開發運營框架&#xff0c;叫做毫秒服務引擎&#xff08;Mass Service Engine in Cluster&#xff0c;MSEC&#xff09;&#xff0c;它集RPC、名字發現服務、負載均衡、業務監控、灰度發布、容量管理、日志管理、Key-Value存儲于一體&#xff…

古代隱士如何忙衣食

三歲娃兒都曉得&#xff0c;吃飯穿衣是維持生命的基本條件&#xff0c;想瀟灑地“舊山歸隱浪搖青&#xff0c;綠鬢山童一帙經”&#xff0c;就得準備足夠的柴米油鹽。 所謂隱士&#xff0c;須得強調是“士”&#xff0c;即讀書人。手無縛雞之力&#xff0c;不仕就無俸祿&…

一個秘密

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 這是一個秘密&#xff0c; 一個不想說出來&#xff0c;卻真實的秘密&#xff1a; --- --- 本來我不想說&#xff0c; 可是最近的一切…

程序員如何在大公司做管理

本文被記錄的最大初衷在于從創業公司的CEO轉變成阿里巴巴的一名開發專家&#xff0c;打心底觸動了心靈最深處的一次學習經歷&#xff0c;無論成長、挫折、困難、收獲都烙在心里。 寫文章的思路&#xff1a; 背景&#xff08;認清現狀&#xff09;管理&#xff08;闡述自己的理解…

WebGL之物體選擇

原文地址: WebGL之物體選擇 使用WebGL將圖形繪制到畫布后&#xff0c;如何與外部進行交互&#xff1f;這其中最關鍵的就是如何實現物體的選擇。比如鼠標點擊后判斷是否選中了某個圖形或圖形的某個部分。 本節實現的效果: WebGL選中物體 如何實現選中物體 顏色區分法 《WebGL編程…

中國歷史上影響最大的10首詩

中國是詩歌的國度&#xff0c;有許多詩都有很大的影響。這里所謂影響“最大”(而不是“最好”)的十首詩&#xff0c;除了要寫得好之外&#xff0c;還必須通俗易懂、易記。 第一首&#xff1a;李白的《靜夜思》 床前明月光&#xff0c;疑是地上霜。 舉頭望明月&#xff0c;低頭…

XML建模

建模分兩步&#xff1a;1、以面向對象的編程思想&#xff0c;描述xml資源文件。 2、將xml文件中內容封裝進model實體對象。 導入文件&#xff1a;config.xml <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE config[<!ELEMENT config (acti…

Docker 方式安裝部署 rocketMQ 、部署 圖形化界面控制臺、rocketMQ 控制臺

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 直接上官網&#xff0c;找到工程&#xff0c;clone 到本地&#xff0c;地址&#xff1a;https://github.com/apache/rocketmq-extern…

迭代器(iterator)

Date: 2019-05-23 Author: Sun 為何要引入迭代器&#xff1f; ? 通過列表生成式&#xff0c;我們可以直接創建一個列表&#xff0c;但是&#xff0c;受到內存限制&#xff0c;列表容量肯定是有限的&#xff0c;而且創建一個包含100萬個元素的列表&#xff0c;不僅占用很大的存…

初識python之函數基礎

課堂筆記&#xff1a; 1、什么是函數&#xff1f;函數相當于工具&#xff0c;需要事先準備好&#xff0c;在需要用時再使用。2、如何使用函數&#xff1f;函數必須先定義、后調用。3、函數的語法:# def 函數名(參數1,參數2...):# """# 注釋# 函數的說明# 水…

java 的幾種對象 (PO,VO,DAO,BO,POJO) 解釋

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、PO:persistant object 持久對象,可以看成是與數據庫中的表相映射的java對象。最簡單的PO就是對應數據庫中某個表中的一條記錄&#x…

【隨想】每日兩題Day.22

題目&#xff1a;102. 二叉樹的層序遍歷 給你二叉樹的根節點 root &#xff0c;返回其節點值的 層序遍歷 。 &#xff08;即逐層地&#xff0c;從左到右訪問所有節點&#xff09;。 示例 1&#xff1a; 輸入&#xff1a;root [3,9,20,null,null,15,7] 輸出&#xff1a;[[3],[…

幫助子女成功的十大路徑

美國全國家長協會(National PTA)建議指出&#xff1a;作為家長您對你子女的成功起著非常重要的影響作用&#xff0c;并舉出幫助子女成功的十種路徑。 1、與子女溝通 如果我們盡早地與子女溝通&#xff0c;提供給他們信息與行為準則&#xff0c;獲得子女的信任&#xff0c;在…

shell關閉指定進程

例如要關閉jupyter-notebook這個進程&#xff1a; ps -ef | grep jupyter-notebook | grep -v grep | cut -c 9-15 | xargs kill -9 說明&#xff1a;管道符“|”用來隔開兩個命令&#xff0c;管道符左邊命令的輸出會作為管道符右邊命令的輸入。 “ps -ef” 查看所有進程  …

垃圾回收算法與垃圾回收器

Java與C等語言最大的技術區別&#xff1a;自動化的垃圾回收機制&#xff08;GC&#xff09; 為什么要了解GC和內存分配策略 1、面試需要 2、GC對應用的性能是有影響的&#xff1b; 3、寫代碼有好處 棧&#xff1a;棧中的生命周期是跟隨線程&#xff0c;所以一般不需要關注 堆&a…

提高孩子睡眠質量 學業事半功倍

睡眠如同大腦的食物。在睡眠期間&#xff0c;許多重要的身體機能靜靜地發生著作用。省略睡眠是有害的&#xff0c;如果一個嚴重缺覺的人開著車&#xff0c;他會臉色蒼白、喜怒無常、反應遲鈍&#xff0c;可能是致命的危險。缺少睡眠讓青少年很難與人相處&#xff0c;學業表現不…