当前位置: 首页 > news >正文

Docker核心文件:DockerCompose文件

目录

1、概念

2、文件结构

3、核心配置项

3.1 version - 版本声明

3.2 services - 服务定义

3.3 networks - 网络配置

3.4 volumes - 数据卷配置

4、实战示例:搭建 WordPress

5、常用操作命令


1、概念

一个 Docker Compose 文件(通常是 docker-compose.yml)是一个 YAML 格式的配置文件。它的核心作用是用一份配置文件,定义一个多容器的应用,包括各个服务、它们之间的网络、数据卷等资源。之后,只需要一个简单的 docker-compose up 命令,就能启动整个应用栈。

2、文件结构

一个典型的 Docker Compose 文件包含以下几个主要部分:

部分功能说明
version定义 Compose 文件格式的版本。
services核心部分,定义应用中的各个服务容器。
networks定义服务之间通信所使用的网络。
volumes定义服务中需要使用的持久化数据卷。

3、核心配置项

3.1 version - 版本声明

这行代码通常位于文件首行,用于指定 Compose 文件格式的版本,它与 Docker Engine 的版本有对应关系。建议使用较新的版本(如 '3.8')以获得更多功能。

version: '3.8'

3.2 services - 服务定义

这是文件中最关键的部分,每个服务都对应一个容器。

配置项作用与示例
image指定服务所使用的镜像。
image: nginx:latest
build如果服务需要从 Dockerfile 构建镜像(自定义镜像),则指定构建上下文路径。
build: ./app 或 详细配置:
build:
  context: .
  dockerfile: Dockerfile.dev
ports映射宿主机端口与容器端口。
ports:
  - "8080:80"
  - "443:443"
volumes挂载宿主机目录或数据卷到容器中,用于数据持久化或配置文件映射。
volumes:
  - ./html:/usr/share/nginx/html
  - db_data:/var/lib/mysql
environment直接设置容器内的环境变量。
environment:
  - MYSQL_ROOT_PASSWORD=my-secret-pw
  - MYSQL_DATABASE=myapp
env_file从一个文件中加载环境变量。
env_file:
  - ./.env
depends_on表达服务之间的启动依赖关系。Docker Compose 会先启动依赖的服务。
depends_on:
  - db
  - redis
command覆盖容器启动后默认执行的命令。
command: ["nginx", "-g", "daemon off;"]
restart配置容器的重启策略,例如 always 表示总是重启。
restart: always

3.3 networks - 网络配置

可以定义自定义网络,以实现服务间更安全、更高效的通信。

services:web:image: nginxnetworks:- frontenddb:image: mysqlnetworks:- frontend- backendnetworks:frontend:driver: bridgebackend:driver: bridge

在这个例子中,web 和 db 服务通过 frontend 网络相连,而 db 还单独连接了 backend 网络。

3.4 volumes - 数据卷配置

数据卷用于持久化容器产生的数据,防止数据因容器删除而丢失。

services:db:image: mysqlvolumes:- db_data:/var/lib/mysqlvolumes:db_data:driver: local

这里定义了一个名为 db_data 的命名卷,并挂载到了 MySQL 容器的数据目录。

4、实战示例:搭建 WordPress

下面是一个经典的 WordPress 项目的 Docker Compose 文件,它清晰地展示了上述配置项是如何协同工作的。

version: '3.9'services:db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress:depends_on:- dbimage: wordpress:latestvolumes:- wordpress_data:/var/www/htmlports:- "8888:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpressvolumes:db_data: {}wordpress_data: {}

这个例子是如何工作的:

  • 服务:定义了 db(数据库)和 wordpress(网站)两个服务。

  • 依赖wordpress 服务通过 depends_on 指明它依赖于 db 服务,因此数据库会先启动。

  • 持久化:通过命名卷 db_data 和 wordpress_data 分别保存数据库数据和网站文件。

  • 环境变量:通过环境变量配置数据库连接信息,例如密码、数据库名等。

  • 端口映射:将主机的 8888 端口映射到 wordpress 容器的 80 端口,这样就能通过 http://localhost:8888 访问网站了。

5、常用操作命令

在包含 docker-compose.yml 文件的目录下,执行以下命令:

命令说明
docker-compose up -d创建并启动所有服务(后台模式)。
docker-compose down停止并移除所有容器、网络。
docker-compose ps查看当前服务的状态。
docker-compose logs查看所有服务的日志输出。
docker-compose restart重启所有服务。

http://www.dtcms.com/a/553342.html

相关文章:

  • 企业网站 自助建站网站做竞价经常会被攻击吗
  • Android ble理解
  • 深入理解 Spring Boot Web 开发中的静态资源处理机制
  • 网站建设费记什么科目产品ui设计是什么
  • 衡水企业网站设计国内app开发公司
  • 【java EE】IDEA 中创建或迁移 Spring 或 Java EE 项目的核心步骤和注意事项
  • 如何保证缓存与数据库更新时候的一致性
  • 【Spring Boot Starter 设计思考:分离模式是否适用于所有场景】
  • HTTP 头部参数数据注入测试sqlilabs less 18
  • 网站速度慢的原因做网站建设优化的电话话术
  • 【数据结构】单链表 练习记录
  • mac 安装 jdk17
  • 【项目实战1-瑞吉外卖|day22】
  • 怎么用dw做响应式网站网站主持人制作网站代言人
  • Android开发自学笔记 --- Kotlin
  • 从VB到PyCharm:编程工具跨越时代的传承与革命
  • 网站建设创新成果四年级写一小段新闻
  • 生产环境用Go语言完成微服务搭建和业务融入
  • 第九课 四川料理は辛いです
  • DevEco Studio在模拟器中改变运行的 ets 文件
  • 第5讲:项目依赖管理与资源管理
  • 网站定制案例微安电力wordpress 分类合并
  • Orleans 的异步
  • comsol livelink with matlab
  • PDF文档中表格以及形状解析-后续处理(线段生成最小多边形)
  • 5G工业边缘计算网关,重构工业智能化
  • 网站中英文切换代码wordpress插件问题
  • 解析 Lua 虚拟机整数与浮解析 Lua 虚拟机整数与浮点数处理:类型转换与运算精度控制
  • 个人网站可以做充值工业设计网页
  • 【C/C++刷题集】二叉树算法题(一)