docker compose

文章目录

      • 什么是docker-compose
      • docker-compose 安装
      • 构建wordpress + mysql
      • 使用docker-compose构建 wordpress + mysql
      • docker-compose.yml 解析
      • docker compose 常用命令

什么是docker-compose

可以理解为批处理工具
根据定义的yml管理docker容器
强大在于同时管理多个容器
下面以构建wordpress + mysql 来体会下docker-composer的魅力

docker-compose 安装

如果你是参照我的文章《centos 安装Docker》安装的docker环境 那么compose是已经安装了的
通过 docker compose version 看下有没有安装好
没有安装的话,参考 https://docs.docker.com/compose/install 文档进行安装

构建wordpress + mysql

不使用docker-compose 怎么构建呢?
要先启动mysql容器,再启动wordpress容器
wordpress要和mysql通信(要么 link 或者共同使用新创建的网络,新创建的网络自带link)
然后wordpress和本地端口映射

先去dockerhub查看下wordpress需要什么文件配置
下面文件从https://github.com/docker-library/wordpress/blob/master/wp-config-docker.php拷贝
mysql需要一个默认的wordpress数据库,然后需要设置密码,用户用默认的root
wordpress 设置连接mysql地址,mysql用户名以及密码

/** The name of the database for WordPress */
define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress') );

/** Database username */
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'example username') );

/** Database password */
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'example password') );

/** Database hostname */
define( 'DB_HOST', getenv_docker('WORDPRESS_DB_HOST', 'mysql') );
# 启动mysql 并创建wordpress库 设置root密码123456
docker run -d --name=mysql -e MYSQL_DATABASE=wordpress -e MYSQL_ROOT_PASSWORD=123456 mysql

# 启动wordpress
docker run -d --name=wordpress --link mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e DB_HOST=mysql:3306 -p 80:80 wordpress 

# 然后就能通过url访问了

使用docker-compose构建 wordpress + mysql

docker-compose.yml

services:
  mysql:
    image: mysql
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_ROOT_PASSWORD: 123456
  wordrpress:
    image: wordpress
    links:
      - mysql
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: 123456
      DB_HOST: mysql:3306

启动
然后就能通过url访问了

docker compose up

docker-compose.yml 解析

services:
  # 设置了mysql容器相关信息
  # image指定了镜像
  # volumes 指定存储相关挂载
  # network 指定了使用的网络
  # environment 设置环境变量
  # 等价于 docker run -d -v mysql-data:/var/lib/mysql --network my-bridge -e MYSQL_DATABASE=wordpress -e MYSQL_ROOT_PASSWORD=123456 mysql
  mysql:
    image: mysql
    volumes:
      - "mysql-data:/var/lib/mysql"
    networks:
      - my-birdge
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_ROOT_PASSWORD: 123456
 # ports 设置端口映射
 # 等价于 docker run -d --network my-bridge -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e DB_HOST=mysql:3306 -p 80:80 wordpress
  wordrpress:
    image: wordpress
    networks:
      - my-birdge
    # 使用了自己创建的网络,则不需要使用link了
    links:
      - mysql
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: 123456
      DB_HOST: mysql:3306
# 等价于 docker network create -d bridge my-bridge
networks:
  my-birdge:
    driver: bridge
# 等价于 docker volume create mysql-data
volumes:
  mysql-data:

如果需要根据Dockerfile镜像,可以使用build

# docker-compose.yml
# 使用 ../Dodckerfile 文件构建
services:
  m-nginx:
    build: ../
    ports:
      - 80:80

如果文件不叫Dockerfile,可以通过dockerfile: 指定文件名

# docker-compose.yml
# 使用 ../my_file 文件构建
services:
  m-nginx:
    build:
      context: ../
      dockerfile: my_file
    ports:
      - 80:80

docker compose 常用命令

# 根据当前目录下docker-compose.yml 启动
docker compose up

# 可以加载指定位置的yml文件启动
docker compose -f /usr/lib/docker-compose.yml up

# 停止
docker compose stop

# 启动
# 和 docker compose up 的区别在于不会重新构建
docker compose start

# 查看运行中的compose
docker compose ps

# 列出compose 中的容器和image信息
docker compose images

# 进入容器内部
# 以bash 进入 m-nginx 容器
docker compose exec m-nginx bash

# 删除已经停止了的compose
docker compose down

你可能感兴趣的:(#,docker,docker,mysql,容器)