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