我正在嘗試使用 docker compose 構建應用程式的映像和容器。但是,當我嘗試鏈接容器時,它不斷給出錯誤“服務 api 有一個未定義的服務 'containername' 的鏈接”。有人知道我在做什么錯嗎?
這是我的代碼:
version: "3.9"
services:
db:
image: mysql:5.6
ports:
- 23306:3306
volumes:
- .:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: quint
MYSQL_DATABASE: cddb_quin
MYSQL_USER: cddb_quint
MYSQL_PASSWORD: quint
container_name: cddb_mysql
api:
build: ./backend
ports:
- 28080:8080
image: javaimage:latest
links:
- cddb_mysql:mysql
container_name: cddb_backend
web:
build: ./frontend
ports:
- 20080:80
image: angularimage:latest
links:
- cddb_backend
container_name: cddb_frontend
uj5u.com熱心網友回復:
撰寫links:是一個過時的功能。甚至在現代 Compose 中——任何具有頂級services:塊的 Compose 檔案——Compose 都會自動為您創建一個 Docker 網路并將所有服務附加到它。您幾乎總是可以安全地洗掉links:而不會丟失任何功能。
可以使用但不能使用 Docker 網路的一件事links:是使另一個容器以不同的名稱可見。您擁有的links: [cddb_mysql:mysql]語法可以做到這一點。不過,這樣做并沒有什么特別的好處。
因此,解決您遇到的錯誤的最簡單方法是洗掉所有links:塊。您沒有展示如何配置資料庫連接,但您需要將其配置為指向資料庫的 Compose 服務名稱db。 Docker 檔案中的 Compose 中的網路進一步描述了此設定。
(您也可以洗掉所有container_name:設定,并且在您的影像上,如果您不打算將它們推送到注冊表build:,則可以洗掉它們的手動名稱。)image:
version: '3.8'
services:
api:
build: ./backend
ports:
- 28080:8080
environment:
- MYSQL_HOST=db
db: { ... }
backend: { ... }
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480093.html
