1. 程式人生 > >開發過程中持續使用Git程式碼更新Docker容器的方法

開發過程中持續使用Git程式碼更新Docker容器的方法

在開發除錯過程中,需要不斷更新程式碼到Git庫,然後使用Git庫中的最新程式碼更新執行著的Docker容器,目前看來有如下兩種方法,建議使用第二種。

1. 直接在容器中執行git命令,更新容器中的目錄和檔案(不推薦)

1) 首先,在構建容器映象檔案的時候,定義在Dockfile檔案中並設定程式碼的Git庫

RUN apt-get install -y git

RUN git config --global user.name "Xiangbin Han"
RUN git config --global user.email "[email protected]"

RUN mkdir /home/myname/.ssh/
RUN chmod 700 /home/myname/.ssh/
ADD id_rsa /home/myname/.ssh/
RUN chmod 600 /home/myname/.ssh/id_rsa

RUN echo 'StrictHostKeyChecking no\nUserKnownHostsFile /dev/null' > /home/myname/.ssh/config
RUN chmod 644 /home/myname/.ssh/config

RUN su -myname -c \
  "git clone ssh://
[email protected]
:29418/myparent/myproject /home/myname/myproject \ ; cd /home/myname/myproject \ ; git fetch ssh://[email protected]:29418/myparent/myproject ${refs} \ ; git checkout FETCH_HEAD" RUN chown -R myname:mygroup /home/myname

2) 其次,基於構建的容器映象檔案啟動容器
docker run -it --name container_name image_name:version

3) 需要更新執行中的容器的目錄或檔案時,執行如下Docker命令docker exec

docker exec container_name bash -c "cd /home/myname/myproject;git fetch ssh://[email protected]:29418/myparent/myproject ${GERRIT_REFSPEC};git checkout FETCH_HEAD"

說明,這種方法的弊端是必須能夠在容器內部執行Git命令,因而不得不將私鑰加入到容器,導致安全風險。


2. 直接對容器例項執行docker cp命令,更新容器中的目錄和檔案(推薦)

docker cp ~/myproject/. container_name:/home/myname/myproject

3. 啟動容器例項的時候,為容器載入Volume(推薦)

docker run -v /mnt/temp/myproject/:/home/myname/myproject ...

補充說明:

在生產環境中,由於程式碼比較穩定,可以在構建映象的時候就程式碼直接加入到映象中。

即在Dockfile中設定如下:

RUN COPY . /home/myname/myproject

相關推薦

開發過程持續使用Git程式碼更新Docker容器方法

在開發除錯過程中,需要不斷更新程式碼到Git庫,然後使用Git庫中的最新程式碼更新執行著的Docker容器,目前看來有如下兩種方法,建議使用第二種。1. 直接在容器中執行git命令,更新容器中的目錄和檔案(不推薦)1) 首先,在構建容器映象檔案的時候,定義在Dockfile檔

安卓開發過程遇到的問題總結及解決方法

1、每次從github同步程式碼的時候R會變紅 2、佈局檔案顯示不出效果 解決方法:降低API的版本為23或22 3、Android中SwipeRefreshLayout和listview的衝突 4、FloatingActionButton的使用

小程式開發過程 全域性變數、函式的應用方法

小程式開發過程中,全域性變數、函式的應用能讓你的小程式優化起來更加便捷,到底微信小程式全域性變數怎麼使用呢?本文講解一下啦。 一、全域性函式 小程式開發過程中,不同頁面要用到一些相同的函式,比如時間轉化函式,如果每個頁面都寫這樣一個函式,程式碼繁瑣不說,修改極其不

WEB開發過程遇到的各種問題及解決方法總結

A:把MySQL的jar包放在Tomcat安裝目錄下的lib資料夾下 ------------------------------------------------------------------------------------------------ Q:The server does n

Spring開發過程遇到的錯誤集錦(持續更新

(1)這個錯誤是由於xml檔案第一行多了一空行。 解決方法: 刪除xml檔案後的空行。 錯誤資訊: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 2 in X

Unity開發過程遇到的部分問題記錄(持續更新

Unity報錯Invalid normalized color        編譯時無錯,開啟介面時就報上面錯誤。這是因為Color構造方法裡r,g,b,a的值取值範圍是0到1。而Color32構造方法的取值範圍是0到255。 Unity報錯Request error (

Git多分支開發過程處理衝突的經驗教訓

最近在專案開發中遇到一個問題,不同分支的程式碼產生大量衝突,導致合併麻煩。這也算是一個教訓。值得記錄下來反思。 不同分支程式碼的衝突問題 已上線分支為 master,我負責的分支為 A,另外有人負責的分支是 B,恰恰因為專案需求的原因,A 和 B 分支上的某個類會被我們同時改動

Vue.js 餓了麼開發過程的錯誤整理(更新……)

此錯誤解決方案基本上來自CSDN,我只是配合我的問題做個整理,方便下次查詢,侵權刪 一、錯誤一 原因:   ./表示你自己當前載入當前目錄下的router檔案,但是我們沒有這個檔案,所以‘./router’會報錯; ‘vue-router’表示這是一個模組,這

git開發過程的使用流程

開發 clone commit 進行 title image git lis 公司 001、創建倉庫 002、新建項目 003、初始化倉庫 這一步不需要做 git init : 文件夾中會多出一個隱藏的.git文件 004、克隆項目 git cl

Android開發過程git、repo、adb、grep等指令的使用

chown       是一條在Unix系統中用於設定檔案所有者和檔案關聯組的命令。 需要超級使用者的許可權才能執行此命令。只有超級使用者和屬於組的檔案所有者才能變更檔案關聯組。非特權使用者(非超級使用者)如需要設定關聯組可能需要使用chgrp命令。     # chown rob:developers

移動開發過程grep、find、adb、git、repo等常用指令的使用場景

專案開發中通常都會涉及到相關指令,這是我這整理的日常使用最頻繁的一些 一.find命令     基本格式:find path expression     1.按照檔名查詢     (1)find / -name httpd.conf  #在根目錄下查

使用phxpaxos開發過程遇到的坑

例如 exec 永遠 傳輸 snap 如果 poi 沒有 github 1. 開啟BatchPropose後,狀態機使用ExecuteForCheckpoint生成快照要註意: ExecuteForCheckpoint中的InstanceID不能立即持久化。 例如:

ReactJS 開發過程的一些使用心得

有著 dom操作 作者 -s arc 有用 第一個 sets tao ReactJS作為目前最火的構建用戶界面的前端框架,為什麽有那麽多的前端工程師去追逐它,不僅因為它簡單,而且它提供了一系列強大的API讓我們擺脫以前繁瑣的DOM操作,使我們的邏輯更加清晰,代碼更加簡單。

在混合app開發過程使用百度地圖api的出現坐標偏差的解決

百度 api call cordova overlay forum gpo ext ddr 在項目中使用ngCordova的$cordovaGeolocation模塊獲取當前位置經緯度,當展示在百度地圖中時發現有誤差(我的測試誤差為1.7公裏左右),查資料發現百度地圖經緯度

使用IntelliJ IDEA過程webpack無法熱更新

更換 福音 avi 更新 方式 pear ear pack onf 最近發現一個問題,就是在使用IntelliJ 的過程中發現webpack的熱更新失效,也在網上找過很多的修改webpack.config.js配置文件的方法,但是都沒有生效,看著同事們一個一個在愉(tong

微信紅包店小程序開發過程遇到的問題 php獲取附近周邊商家 顯示最近商家

企業 使用 發出 微信紅包 status 不用 發放 經緯 appid 最近公司在做一個項目就是微信紅包店。仿照的是微信官方在做的那個紅包店的模式。客戶搶紅包,搶到以後到店消費,消費以後就可以拿到商家的紅包了。 項目中的兩個難點: 1通過小程序來發紅包 這個之前在

關於基於Linphone的視頻通話Android端開發過程遇到的問題

浪費 phone 模式 需要 class 通話 其他 了解 同時 關於基於Linphone的視頻通話Android端開發過程中遇到的問題     運用開源項目Linphone的SDK進行開發,由於是小組進行開發,我主要負責的是界面部分。   由於當時是初學Android開發

nodejs開發過程遇到的一些插件記錄

.com 實現 輸出 規範 blog com nod 記錄 pan 1、chalk   Github:https://github.com/chalk/chalk    終端樣式定制插件,可自定義輸出日誌的樣式。 1、semver   管網:https://semv

大數據開發過程常用的分析軟件

大數據開發 大數據分析 大數據 Hadoop 大數據開發過程中常用的分析軟件大數據研究的出現,為企業、研究機構、政府決策提供了新的行之有效思路和手段,想要做好大數據的管理和分析,一些大數據開發工具的使用是必不可少的,以下是大數據開發過程中常用的工具:1. Apache HiveHive是一個建

二.JSP開發過程遇到的問題及解決

java 告訴 概率 share 回車 命令 left wid 應用 轉載自:http://www.cnblogs.com/leftshine/p/5238001.html 一.開發環境問題 問題一:Failed to load the JNI shared library