簡體   English   中英

如何使用docker-compose和Dockerfile構建項目的映像?

[英]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正是要替換它)。


請記住, DockerfilesDockerfiles 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM