簡體   English   中英

“名稱”與任何正則表達式都不匹配:“^x-”嘗試在 docker-compose.yml 中設置項目名稱時

[英]'name' does not match any of the regexes: '^x-' while trying to set the project name in a docker-compose.yml

我將以下行放在 docker-compose.yml 的頂部,以獲得由特定 docker-compose 旋轉的容器的預設名稱:

name: my_project_name

例如,目標是讓我的數據庫服務容器命名為“my_project_name_database”。

但是,在嘗試使用 docker-compose 啟動它后,我收到以下錯誤:

錯誤:Compose 文件 './docker-compose.yml' 無效,因為:'name' 與任何正則表達式都不匹配:'^x-' 您可能會看到此錯誤,因為您使用了錯誤的 Compose 文件版本. 指定支持的版本(例如“2.2”或“3.3”)並將您的服務定義放在services鍵下,或者省略version鍵並將您的服務定義放在文件的根目錄以使用版本 1。撰寫文件格式版本,請參閱https://docs.docker.com/compose/compose-file/

無論我指定什么版本的 docker-compose,這種情況都會發生。 我在這里做錯了什么? 這是在 docker-compose.yml 級別設置項目名稱的正確方法嗎?

我建議不要設置頂級name:鍵,但如果需要,請設置COMPOSE_PROJECT_NAME環境變量。

export COMPOSE_PROJECT_NAME=my_project_name
docker-compose up -d

項目名稱也默認為當前目錄的基本名稱,因此重命名它可能是一種選擇。

cd ..
mv project my_project_name
cd my_project_name
docker-compose up -d

Docker 對 Compose 文件格式做了一些令人困惑的事情。 他們引入了一個Compose 規范,該規范與現有工具有一些不兼容,然后將所有合理當前版本的 Compose 工具都很好支持的 現有 版本標記為“舊版”。 頂級name: key 在“規范”版本中是新的,但在“舊”版本中不存在。

Compose 文件版本23都不支持頂級name: key。 如果您正在運行獨立的docker-compose工具,則在 Compose 文件中沒有設置項目名稱的選項。 但是$COMPOSE_PROJECT_NAME適用於所有當前合理的 Compose 版本。

如果您運行docker-compose version並打印

$ docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1h  22 Sep 2020

那么你就不能使用 Compose 規范,但是你可以使用得到良好支持的“遺留”版本。 但是,如果您運行docker compose version (注意,三個單詞,沒有連字符),它會打印

$ docker compose version
Docker Compose version v2.6.0

那么您可以使用“傳統”版本或“規范”版本。

也就是說,如果您使用“規范”擴展,那么您必須使用安裝了 Compose 擴展的 Docker 的最新版本,但如果您使用version: '2.4'version: '3.8'那么它將適用於任何或多或少當前版本的 Compose。


我看到的設置$COMPOSE_PROJECT_NAME的常見用例是同時運行同一個 Compose 文件的多個副本。 為此,您需要設置環境變量(並且還需要為已發布的ports: ,並避免手動設置container_name:或卷或網絡名稱); 如果它是文件中的一個常量,那么您必須在使用應用程序的一個實例或另一個實例時對其進行編輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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