我正在將C++項目的構建移到Docker鏡像中。這張圖片將由Jenkins的工作建立和推送。在Docker之前,我大量使用ccache來加速我在Jenkins上的構建,特別是在構建幾乎沒有變化的情況下。碼頭工人遇到的麻煩是現在的構建運行在一個孤立的環境中,所以我不能再受益於ccache。在仍然利用ccache的情況下,是否有辦法在短暫的容器內構建內容?在Docker內部構建時使用ccache
3
A
回答
4
您仍然可以將ccache與您的構建一起使用。
創建Data Volume允許數據建立使用以下命令/編譯之間仍然存在:
$ docker create -v /mnt/ccache:/ccache --name ccache debian
然後創建容器「坐騎」上面使用--volumes-from
命令行選項創建的數據容器。
$ docker run -e CCACHE_DIR=/ccache --volumes-from ccache -it debian
現在,您可以在debian容器的外殼,可以安裝所需的應用程序和測試的ccache:
[email protected]:/# apt-get update && apt-get install -y gcc ccache
現在,在這一點上,你可以檢查緩存,這將是空預期:
[email protected]:/# ccache -s
cache directory /ccache
cache hit (direct) 0
cache hit (preprocessed) 0
cache miss 0
files in cache 0
cache size 0 Kbytes
max cache size 1.0 Gbytes
的數據量將持續存在,因此容器被終止後,也緩存仍然存在。裝入卷的未來版本(並指定-e ENV變量)將使用緩存。
然後創建一個簡單的應用程序,運行它,並再次檢查緩存:
[email protected]:/# cat > foo.c << __EOF__
int main(int argc, char **argv)
{
return 0;
}
__EOF__
[email protected]:/# PATH=/usr/lib/ccache:$PATH gcc -o foo.o -c foo.c
[email protected]:/# ccache -s
cache directory /ccache
cache hit (direct) 1
cache hit (preprocessed) 0
cache miss 1
files in cache 2
cache size 8 Kbytes
max cache size 1.0 Gbytes
你可以看到現在已填充緩存,並進一步建立會看到,因爲它的性能改進。
數據量將持續存在,所以即使容器終止後,緩存仍然存在。裝入卷的未來版本(並指定-e ENV
變量)將利用緩存。
本博客文章做了解釋它的一個好工作:,我想創建一個形象,我生成的結果
相關問題
- 1. Docker內部結構
- 2. 何時使用ccache?
- 3. PHP docker最好的方法。在Docker內部或外部構建應用程序?
- 4. 構建時的Docker祕訣
- 5. ccache的使用MinGW在Windows
- 6. gitlab.com CI-在docker中使用docker構建NodeJS應用程序
- 7. 使用ccache和make
- 8. 如何使用apt-get在Ubuntu容器內部安裝Docker Docker
- 9. Docker和NGINX - 在Docker構建時未在上游找到主機
- 10. Docker + Kubernetes構建
- 11. 如何在使用卷時提高Docker構建的速度
- 12. InstallShield 2012 LE在構建時產生「6417內部構建錯誤」
- 13. 如何使用Jhipster,Docker,Gitlab和Heroku構建,測試和部署
- 14. 從更多內存的Dockerfile構建Docker
- 15. 構建docker需要多少內存v1.9.0
- 16. 如何使用gitlab-ci構建docker內的archlinux pkgbuild
- 17. 如何使用Dockerfile構建docker-build?
- 18. 使用leiningen構建非uberjar Docker鏡像
- 19. 無法使用makepkg構建docker-git
- 20. 在VM中構建Docker
- 21. 在Ubuntu上構建v8(docker)
- 22. 與ccache一起使用gcc
- 23. Docker構建狀態
- 24. Docker構建錯誤
- 25. NPM和Docker構建
- 26. 使用Docker構建的Wild/Jboss Docker集羣
- 27. 使用Docker容器來構建另一個Docker鏡像
- 28. 在內部創建CI構建TFS 2015
- 29. 內部部署Docker Central
- 30. Docker撰寫何時使用圖像構建
麻煩的是(我可能只是誤會)。這種方法似乎讓我在容器中使用ccache,而不是使用docker build命令。 –
您可以使用'RUN'命令將'ccache'添加到您的Dockerfile中,或者使用Docker Compose在'docker-compose build'期間掛載和使用該卷。您還可以使用'docker commit'將容器保存到圖像中。 –
是的,我認爲將上述與「docker commit」結合起來可能是最好的途徑。謝謝。 –