這是一個介紹,我已經遇到了幾次了,實際上是一個原則一個很好的問題在兩個獨立但相關問題:
1)如何最好地處理臨時文件在泊塢
碼頭工人在ENCA是偉大的規劃一個環境的全部和全部娛樂。如果您在容器外「處理」部分流程,即在docker build
流程之外運行composer install
,那麼您的可移植構建流程便宜,因爲您可能引入了您不知道的機器/環境依賴關係。
如果你總是在Docker中重建完整的環境,那麼你可以保證你的依賴關係總是滿足的,你可以將dockerfile給予任何其他人,他們也會很有信心在本地重建而不會出現問題。
的臨時文件是理想的內泊塢建設!所以我會盡可能在容器內構建它們。
2)如何進行去耦授權,泊塢建造過程
這使我們對第二個問題,如何去夫婦建立的授權?
選項1 - 烘烤在作曲家身份驗證。JSON與creds對於一個新建的用戶:
至於其他的答案說,你可以「烤在」憑據,然後再刪除它們。但是你不想'像'ssh鍵那樣敏感。 Composer支持auth.json文件,那麼爲什麼不創建專用的構建用戶並將其聲明(而不是您的聲明)存儲在auth.json文件中?如果它被破壞,你可以改變密碼。一旦作曲家安裝完成刪除或覆蓋文件。
COPY . ./
RUN composer install --no-dev --no-interaction -o
RUN rm -f ./auth.json
選項2 - 讓vim的信任狀本身瞬變和泊塢窗EXEC它們傳遞到多克爾容器:
我還沒有完全測試這種方法,但我不明白爲什麼東西像這樣不行。
1)你建基地PHP容器中,使得它在運行
,其能夠運行「作曲家安裝」(或使用一個從搬運工集線器)
2.)你旋轉起來此基礎容器的
3.)您使用docker exec將您的信用傳遞給已經烘焙到容器中的包裝腳本。包裝程序腳本將運行作曲家使用HTTP基本身份驗證安裝 - 它已經在用戶名出爐的,所以你只需要爲每http-basic technique
docker exec -d my_base_php_container php -f /my_wrapper_script.php ${PASSWORD}
4.提供密碼)您提交此容器,一個新的形象
docker commit --change "composer install" ${CONTAINER_ID} my_installed_image:1.0
因此,您在內部構建的主要參數是在圖像內部具有所需的所有依賴關係?爲什麼不建立一個私人的建築圖像,然後複製出創建的工件。這樣 - 我有一個一致的構建過程,沒有任何信譽或SSH密鑰,並且我的部署映像也沒有像composer這樣的不必要的圖層。 – NiRR
是的,擁有圖像內的所有依賴性可以提供一致性和可移植性。爲什麼不讓我們的碼頭容器創建工件?好問題,這是另一個好方法!這是我以前使用Maven Docker鏡像嘗試過的,您可以將POM文件傳遞給它,它可以工作,注意事項是1.)如果auth在docker外部,您如何獲得其他人(包括構建服務器/管道)也建立你的形象?和2.)你如何從容器中提取神器? (你可以使用卷掛載來實現這一點,但這可能會引入env特定的依賴關係) – GreensterRox