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

容器之docker compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件,您可以配置应用程序需要的所有服务,并使用单个命令来创建和启动这些服务。以下是对 Docker Compose 的详细介绍:

核心概念

服务(Services)

服务是一个运行容器的抽象。每个服务都运行一个镜像,并且可以包含对容器的配置选项,如端口映射、环境变量、卷挂载等。

网络(Networks)

Compose 中的服务默认会连接到一个默认网络,但您可以自定义网络配置,以便控制不同服务之间的通信方式。

卷(Volumes)

卷用于持久化服务生成的数据。它们允许您在容器重新启动时保留数据,并在多个容器之间共享数据。

安装 Docker Compose

在 Linux 系统上,可以通过以下命令安装 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.0.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

在 macOS 和 Windows 上,Docker Desktop 包含了 Docker Compose,无需单独安装。

基本用法

1. 创建 docker-compose.yml 文件

以下是一个简单的 docker-compose.yml 文件示例:

version: '3.8'
services:web:image: nginx:latestports:- "80:80"database:image: postgres:latestenvironment:POSTGRES_PASSWORD: example

2. 启动服务

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

docker-compose up

这将启动定义的所有服务。使用 -d 选项可以在后台运行:

docker-compose up -d

3. 停止和删除服务

停止服务:

docker-compose stop

删除服务:

docker-compose down

4. 检查服务状态

查看正在运行的服务:

docker-compose ps

5. 重新启动服务

docker-compose restart

常用配置选项

build

指定 Dockerfile 所在的目录,允许在启动容器时构建镜像。

services:web:build: .

volumes

挂载卷到容器中,允许数据持久化或共享数据。

services:web:volumes:- ./data:/var/www/html

environment

设置环境变量。

services:web:environment:- DEBUG=true

depends_on

定义服务之间的依赖关系,确保某些服务在其他服务之前启动。

services:web:depends_on:- database

高级用法

多个 Compose 文件

您可以使用多个 Compose 文件来覆盖或扩展默认配置。例如:

docker-compose -f docker-compose.yml -f docker-compose.override.yml up

环境变量文件

使用 .env 文件来定义环境变量,Compose 会自动加载这些变量。

DB_PASSWORD=supersecret

docker-compose.yml 文件中使用:

services:database:environment:- POSTGRES_PASSWORD=${DB_PASSWORD}

扩展和覆盖

Compose 文件可以通过继承和扩展其他文件来实现复杂的配置管理。

version: '3.8'
services:web:extends:file: common.ymlservice: webapp

实战示例

以下是一个实际应用中的 Docker Compose 配置示例,包含一个 Web 应用和一个数据库服务:

version: '3.8'services:app:build: .ports:- "3000:3000"volumes:- .:/appenvironment:- NODE_ENV=developmentdatabase:image: postgres:latestports:- "5432:5432"environment:POSTGRES_DB: mydbPOSTGRES_USER: userPOSTGRES_PASSWORD: passvolumes:- db_data:/var/lib/postgresql/datavolumes:db_data:

以上配置启动了一个 Node.js 应用和一个 PostgreSQL 数据库,并使用卷来持久化数据库数据。

通过 Docker Compose,您可以方便地定义和管理多容器应用程序,简化了开发、测试和部署的流程。

http://www.lryc.cn/news/396679.html

相关文章:

  • MIT机器人运动控制原理浅析-人形机器人
  • 开源 WAF 解析:选择最适合你的防护利器
  • AirPods Pro新功能前瞻:iOS 18的五大创新亮点
  • JavaScript中的可选链操作符
  • huggingface笔记:gpt2
  • 一次业务的批量数据任务的处理优化
  • 新能源汽车充电站远程监控系统S275钡铼技术无线RTU
  • 海外视频媒体发布/发稿:如何在国外媒体以视频的形式宣发
  • HTML 【实用教程】(2024最新版)
  • How to Describe Figures in a Research Article
  • 昇思MindSpore学习入门-CELL与参数一
  • 【k8s中安装rabbitmq】k8s中安装rabbitmq并搭建镜像集群-hostpath版
  • (5) 深入探索Python-Pandas库的核心数据结构:Series详解
  • JAVA之开发神器——IntelliJ IDEA的下载与安装
  • 通过Umijs从0到1搭建一个React项目
  • Redis 数据过期及淘汰策略
  • vue vite+three在线编辑模型导入导出
  • 去水印小程序源码修复版-前端后端内置接口+第三方接口
  • 机器学习:预测评估8类指标
  • 【深度学习基础】MAC pycharm 专业版安装与激活
  • 排序相关算法--1.插入排序+冒泡排序回顾
  • 变阻器的故障排除方法有哪些?
  • 软考《信息系统运行管理员》-3.1信息系统设施运维的管理体系
  • Nginx重定向
  • 私有化地图离线部署方案之高程检索服务
  • PostgreSQL 中如何实现数据的增量更新和全量更新的平衡?
  • 数据结构--二叉树相关习题5(判断二叉树是否是完全二叉树 )
  • Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)
  • Python: 分块读取文本文件
  • 服务攻防——中间件Jboss