CSDN热搜
Docker Compose 是 Docker 官方提供的一个工具,用于定义和管理多容器应用。它使用 YAML 文件来描述多个 Docker 容器的配置,并通过一条命令来创建和管理这些容器。 Docker compose适用于 微服务架构(例如Nginx + PHP + Mysql) 测试环境(快速搭建应用) CI/CD流程(自动化部署) Docker Compose解决了什么问题 手动运行多个 docker run 命令: 需要为每个容器手动指定网络、端口映射、环境变量等 容易出错,难以维护 使用 Shell 脚本: 通过 Bash 或 Python 脚本管理多个 docker run 命令 仍然缺乏灵活性,维护成本较高。 Docker Compose 通过 YAML 配置文件(docker-compose.yml)来简化多容器管理,让运维更搞笑!
Docker Compose 通常已经集成在 Docker CLI 中,可以直接使用 docker compose 命令。如果需要单独安装,可以执行以下命令:curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose复制代码检查是否安装成功,并检查版本:docker-compose version复制代码
Docker Compose 主要由一个 YAML配置文件 和 命令行工具 组成 YAML配置文件(docker-compose.yml) 用于描述应用的所有 服务(容器)、网络 、数据卷 等。 核心命令(CLI) 启动所有容器docker-compose run复制代码停止并删除容器docker-compose down复制代码查看日志docker-compose logs复制代码查看容器状态docker-compose ps复制代码
假设要部署一个wordpress网站,包含: Nginx + PHP + Wordpress (web服务) Mysql(数据库服务) docker-compose.yml 示例:version: '3.8'services: wordpress: image: wordpress:latest restart: always ports: - "8080:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: mypassword WORDPRESS_DB_NAME: wordpress depends_on: - db db: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: mypassword MYSQL_DATABASE: wordpress复制代码解析: services:定义了两个服务(wordpress 和 db) images:指定使用的Docker镜像 ports:映射端口(如 8080:80,访问 localhost:8080 就能打开wordpress environment:设置环境变量 depends_on:确保 db 服务先启动
如果不使用数据卷,数据库数据会丢失 。 在 docker-compose.yml 中添加 volumes 来解决:services: db: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: mypassword MYSQL_DATABASE: wordpress volumes: - mysql_data:/var/lib/mysqlvolumes: mysql_data:复制代码这样即使 docker-compose down,数据仍然保留
可以创建一个 .env 文件:DB_PASSWORD=mypassword复制代码然后 docker-compose.yml 这样写environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}复制代码这样可以更加安全地管理密码文件,而不直接写在 docker-compose.yml 里。
首先可以自定义一个镜像,例如 PHP + Wordpress 镜像:services: wordpress: build: . ports: - "8080:80" depends_on: - db复制代码同时编写 Dockerfile:FROM wordpress:latestRUN apt update && apt install -y vim复制代码然后运行:docker compose up --build -d复制代码这样就可以用 自己的 Dockerfile 来构建镜像了。
默认情况下,Docker Compose 会为所有服务构建一个 独立的网络,并允许它们通过 服务名互相通信。 也可以自己手动定义网络,如果不手动定义网络那么在Docker compose文件中的主机都会处于同一个网络networks: mynetwork: driver: bridgeservices: wordpress: networks: - mynetwork db: networks: - mynetwork复制代码这样可以管理不同服务的通信
个人学习使用
使用道具 举报
本版积分规则 回帖并转播 回帖后跳转到最后一页
程序园优秀签约作者
0
粉丝关注
14
主题发布