CodeGym /课程 /Docker SELF /配置应用程序的网络和卷

配置应用程序的网络和卷

Docker SELF
第 23 级 , 课程 4
可用

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. 1. 启动容器:
    Terminal
    
    docker compose up
                
  2. 2. 检查网络:
    • 使用命令 docker network ls,确认 task-network 网络已创建。
    • 使用命令 docker network inspect task-network,检查所有容器是否已连接到该网络。
  3. 3. 检查卷:
    • 使用命令 docker volume ls,确认 db-data 卷已创建。
    • 使用命令 docker volume inspect db-data,查看卷的详细信息。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION