Docker:Docker Compose
- 1. Docker Compose 批量管理容器的工具
1. Docker Compose 批量管理容器的工具
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件来配置应用服务,它允许用户编排、组合和配置多个容器的部署。Docker Compose 主要用于开发、测试和生产环境,使得应用部署更为简洁和高效。
主要特点
-  简化配置:通过使用 YAML 文件(通常命名为 docker-compose.yml),所有服务的配置可以在单个文件中进行管理,使得容器服务的配置更加集中和易于管理。 
-  一键部署:用户可以使用一个简单的命令 docker-compose up 来启动和停止整个应用。 
-  服务依赖管理:Docker Compose 允许用户定义服务间的依赖关系,确保服务的启动顺序符合依赖要求。 
-  重复使用:Docker Compose 项目可以在不同的环境中重复使用,保证了开发、测试和生产环境的一致性。 
-  隔离环境:每个项目可以在隔离的环境中运行,互不干扰。 
核心组件
-  服务(services):代表容器本身,在 docker-compose.yml 文件中配置,每个服务可以使用不同的镜像。 
-  网络(networks):定义容器间的网络连接,Docker Compose 默认设置一个网络并连接所有配置的服务。 
-  卷(volumes):用于数据持久化和数据共享,可以在容器间共享文件和目录。 
-  环境变量:可以在配置文件中设置环境变量,用于容器内应用的配置。 
常用命令
- docker-compose up:启动全部或特定的服务,并创建服务需要的任何网络和卷。
- docker-compose down:停止并移除所有容器,可选地包括网络和卷。
- docker-compose build:构建服务所需的镜像。
- docker-compose logs:查看服务的输出日志。
- docker-compose exec:在运行的服务容器中执行命令。

docker compose up -d 上线就是第一次配置
编写一个compose语句
 官方文档:https://docs.docker.com/reference/compose-file/
原来我们只能通过命令逐个安装,比如安装Mysql与wordpass
#创建网络
docker network create blog
#启动mysql
docker run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=wordpress \
-v mysql-data:/var/lib/mysql \
-v /app/myconf:/etc/mysql/conf.d \
--restart always --name mysql \
--network blog \
mysql:8.0
#启动wordpress
docker run -d -p 8080:80 \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=123456 \
-e WORDPRESS_DB_NAME=wordpress \
-v wordpress:/var/www/html \
--restart always --name wordpress-app \
--network blog \
wordpress:latest
name: myblog
services:
  mysql:
    container_name: mysql   // 容器名
    image: mysql:8.0        // 用哪个镜像
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456 // 环境变量,第一种写法
      - MYSQL_DATABASE=wordpress
    volumes:
      - mysql-data:/var/lib/mysql    // 数据卷映射
      - /app/myconf:/etc/mysql/conf.d  // 目录挂载
    restart: always
    networks:
      - blog
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: mysql // 环境变量,第二种写法
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: 123456
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress:/var/www/html
    restart: always
    networks:
      - blog
    depends_on:
      - mysql
volumes:
  mysql-data:    // 数据卷
  wordpress:
networks:
  blog:

 第二次启动的时候会将修改的内容重新build与启动,但是老的没变的直接启动
 
下线后,删除对应的镜像还有卷
 



















