5.1 設置網路
我們再來仔細看看如何為我們的多容器應用設置網路和卷。這將確保服務之間的正確交互和數據的持久存儲。
Docker網路允許容器彼此交互。在我們的應用中,我們會使用 bridge
-網路來連接前端、後端和數據庫。
創建網路
我們已經在 docker-compose.yml
文件中定義了網路 task-network
:
Yaml
networks:
task-network:
driver: bridge
這裡:
- task-network: 網路的名字,將用於容器之間的交互。
- driver:
bridge
: 網路的類型。bridge
網路是單個宿主機上容器間通信的標準類型。
將服務連接到網路
我們已經在 docker-compose.yml
文件中將所有服務連接到了這個網路。確認每個服務都正確連接:
前端示例:
Yaml
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
後端示例:
Yaml
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
數據庫示例:
Yaml
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
5.2 配置卷
Docker 卷讓我們可以將容器的數據保存在主機系統上,確保數據的長期存儲。在我們的應用中,我們會使用卷來存儲 PostgreSQL 資料庫的數據。
創建卷
我們已經在 compose.yaml
文件中定義了卷 db-data
:
Yaml
volumes:
db-data:
含義如下:
-
db-data
: 卷的名稱,用於存儲 PostgreSQL 資料庫的數據。
將卷掛載到資料庫服務
我們已經在 docker-compose.yml
文件中把卷 db-data
挂載到了資料庫服務。請確認這部分設置正確:
資料庫範例:
Yaml
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
含義如下:
-
volumes
: 定義哪些卷將被掛載到容器上。 -
db-data:/var/lib/postgresql/data
: 把卷db-data
與容器內的目錄/var/lib/postgresql/data
進行綁定。這個目錄是 PostgreSQL 用於存儲數據的地方。
5.3 完整的 compose.yaml
文件
為了更清楚和完整,我們提供了包含網路和卷設置的完整 compose.yaml
文件:
Yaml
version: '3'
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
networks:
task-network:
driver: bridge
volumes:
db-data:
檢查網路和卷設置
設定網路和卷後,請確保所有配置正確並正常運行:
- 1. 啟動容器:
Terminal
docker compose up
- 2. 檢查網路:
- 使用命令
docker network ls
,確認網路task-network
已被創建。 - 使用命令
docker network inspect task-network
,檢查所有容器是否已連接到該網路。
- 使用命令
- 3. 檢查卷:
- 使用命令
docker volume ls
,確認卷db-data
已被創建。 - 使用命令
docker volume inspect db-data
,查看卷的詳細資訊。
- 使用命令
GO TO FULL VERSION