当前位置: 首页 > 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,您可以方便地定义和管理多容器应用程序,简化了开发、测试和部署的流程。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《简历宝典》08 - 简历中“教育背景”模块如何扬长避短
  • 48、DR+keepalive
  • JS【详解】类 class ( ES6 新增语法 )
  • Golang | Leetcode Golang题解之第227题基本计算器II
  • 架构面试-场景题-单点登录(SSO)怎么实现的
  • ELK日志分析系统概述及部署
  • x264 编码器 AArch64 汇编函数模块关系分析
  • 【数据结构】排序——快速排序
  • 计算机网络体系结构解析
  • 微生活服务平台与元宇宙的融合
  • 《长相思》第二季回归:好剧质量,永恒的王牌
  • 常用录屏软件,分享这四款宝藏软件!
  • C++ STL iter_swap用法和实现
  • 视频汇聚平台EasyCVR设备录像回看请求播放时间和实际时间对不上,是何原因?
  • FPGA设计之跨时钟域(CDC)设计篇(2)----如何科学地设计复位信号?
  • 【译】理解JavaScript:new 关键字
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • angular组件开发
  • Brief introduction of how to 'Call, Apply and Bind'
  • HashMap ConcurrentHashMap
  • JavaScript的使用你知道几种?(上)
  • JavaScript学习总结——原型
  • jQuery(一)
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • React-flux杂记
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 搭建gitbook 和 访问权限认证
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 和 || 运算
  • 聚类分析——Kmeans
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 优秀架构师必须掌握的架构思维
  • 正则表达式小结
  • ​低代码平台的核心价值与优势
  • # Kafka_深入探秘者(2):kafka 生产者
  • # 安徽锐锋科技IDMS系统简介
  • #{}和${}的区别是什么 -- java面试
  • #Linux(权限管理)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (黑马C++)L06 重载与继承
  • (十)T检验-第一部分
  • (四)opengl函数加载和错误处理
  • (原创)可支持最大高度的NestedScrollView
  • (转) RFS+AutoItLibrary测试web对话框
  • *2 echo、printf、mkdir命令的应用
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net FrameWork简介,数组,枚举
  • .NET 的程序集加载上下文
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • .net知识和学习方法系列(二十一)CLR-枚举