Docker Compose 多容器编排

1.何为Docker Compose

定义:Docker Compose 是一个用于定义和运行多容器 Docker 应用程序 的工具。通过一个 docker-compose.yml 文件来配置应用程序需要的所有服务,然后只需一个命令 (docker compose up),就能启动所有配置好的容器。

作用:使用 yml 文件定义多个容器,一条命令统一启停,解决多服务依赖部署问题

2.docker-compose.yml 核心写法

docker run 参数 docker-compose.yml 写法 你的实战经验对照
-d detach: true 后台运行
--name my-web container_name: my-web 起名字
-p 8080:80 ports: - "8080:80" 端口映射
-v my-vol:/data volumes: - my-vol:/data 数据挂载
--network net1 networks: - net1 网络

3.Nginx+MySQL 组合服务

1.创建compose的工作目录

bash 复制代码
#创建Compose的工作目录
mkdir /opt/compose-demo && cd /opt/compose-demo
mkdir html
echo "docker-compose 多容器测试" > html/index.html

2. 编写yml文件

bash 复制代码
#编写yml文件
vim docker-compose.yml
#声明一个命名数据卷,名称 mysql-data
volumes:
  mysql-data:

#定义两个服务容器 mysql、nginx
services:

  mysql:
      #拉取镜像:mysql 版本 5.7
      image: mysql:5.7
      #自定义容器名字
      container_name: compose-mysql
      ports:
        - "3307::3306"
      #把上面定义的命名卷 mysql-data 挂载到容器内 MySQL 数据目录 /var/lib/mysql
      volumes:
        - mysql-data:/var/lib/mysql
      environment:
        MYSQL_ROOT_PASSWORD: 123456
      #容器退出、服务器重启后,自动重启 MySQL 容器
      restart: always

   nginx:
       image: nginx
       container_name: compose-nginx
       ports:
         - "8080:80"
       volumes:
         - ./html:/usr/share/nginx/html
       depends_on:
         - mysql
       restart: always

#写完后检擦是否有语法问题
docker compose config

3.启动compose服务并验证

bash 复制代码
# 后台启动全部服务
docker-compose up -d

#查看当前运行的 Compose 项目
docker compose ls

# 查看运行容器
docker-compose ps

#查看卷
docker volume ls

#验证nginx服务
curl http://127.0.0.1:8080

#验证容器间网络通信
docker exec compose-nginx curl -v mysql:3306

#拿到返回的IP地址后,在宿主机看是否能ping通

相关推荐
这个昵称不容易11 小时前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
计算机毕设定制辅导-无忧学长12 小时前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
文丑颜不良啊13 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼13 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发
文丑颜不良啊15 小时前
LeetCode2161~2180题目解析
java·leetcode
闲云自留地15 小时前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
文丑颜不良啊17 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发17 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
天天被压力17 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力17 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python