[英]How to build an image of a project using docker-compose with Dockerfile?
我有一個使用docker-compose
在本地開發中運行的項目
作為gitlab和部署的組織要求的一部分,需要將應用程序構建到單個Docker映像中。
我知道可以通過將Dockerfile
添加到項目中來完成。
但是,我想知道是否有關於如何通過docker-compose
將應用程序代碼庫包含通過Dockerfile
docker-compose
運行多個服務的項目納入Dockerfile
的單個映像的任何建議或建議,謝謝。
編輯:據我所知,方法是從應用程序代碼庫中使用Dockerfile構建一個新映像,然后將其包含在部署環境docker-compose.yml
文件中?
編輯2:道歉的困惑。 我是Docker的新手,學習上有些彎路! 在這種情況下,似乎可以在gitlab注冊表中構建應用程序映像,然后將該映像包含在docker-compose中進行部署,然后嘗試一下。
TL; DR
通常,單個Dockerfile不足以替換使用docker-compose進行的整個容器編排,並且不一定是一個好的選擇。
docker-compose.yml
文件轉換為Dockerfile: 您可以將某些信息從docker-compose.yml
文件傳遞到Dockefile
(例如,要運行的命令),但這不是等效的,並且您不能對所有docker-compose.yml
文件內容都這樣做。
不過,您可以用命令行替換docker-compose.yml
文件(因為docker-compose.yml
docker-compose
正是要替換它)。
但
請記住, Dockerfiles
和Dockerfiles
docker-compose
具有兩個完全不同的用途。
Dockerfile
用於圖像構建 ,以定義構建圖像的步驟。
docker-compose
是一個用於啟動和編排容器以構建應用程序的工具(您可以添加一些信息,例如構建上下文路徑或所需圖像的名稱,但不能添加Dockerfile內容本身)。
因此,要求“將docker-compose.yml file
轉換為Dockerfile
”並沒有實際意義。
這更多是關於將docker-compose.yml
文件轉換為一個(或多個)命令行以手動啟動容器。
docker-compose
的目的恰恰是擺脫這些命令行,使事情變得更簡單(它使它自動化)。
從Docker文檔中 :
可以有多個進程,但是要從Docker中獲得最大收益,請避免一個容器負責整個應用程序的多個方面
因此,如果您的入口點允許您啟動多個流程,或者如果您使用主管,則可以,但這不一定是最好的主意。
編輯
由於我也不確定您是否很清楚,因此這是容器和圖片之間的區別 。
在使用Docker之前,您真的應該檢查一下並嘗試理解它,因為這是非常必要的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.