0


【docker四】使用Docker-compose一键部署Wordpress平台

一、YAML 文件格式及编写注意事项(重要)

yaml文件:是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高

类似于json格式。语法比json简单

yaml通过缩进来表示数据结构,连续的项目用-减号来表示

1、yaml文件使用时注意事项:

  1. 大小写敏感
  2. 通过缩进表示层级关系
  3. 只能用空格缩进,不能用tab键
  4. 可以使用#号键注释
  5. 符号字符后面都有一个空格 test: 2
  6. 单引号引起来的字符,会被当做普通字符串处理。"#$*",若双引号引来的特殊字符表示本意

2、yaml文件的基本数据结构:

2.1、声明变量(标量。是单个的不可再分的值,类型:字符串,整数,布尔类型)
name: test
age:    20
tall: yes
handsan: yes
wan: no
2.2、list(列表):表示有序的元素集合
class:
  - test
  - test1
  - test2
2.3、键值对映射:
student: 
  name: test
  age: 20
student1:
  name: test1
  age: 18
2.4、注释:
#test
2.5、引用:
student: &id1
  name: test
  age: 20
student1: *id1
#用&来定义锚点,用*来进行引用
2.6、字符串引号:
name: 'test'
name: "test"
name: '$'        表示字符串
name: "$"    表示$这个字符

二、docker-compose

1、概述

docker-compose:单机容器编排

Dockerfile:先配置好文件,然后build,镜像——>容器。

docker-compose:即可基于Dockerfile,也可以基于镜像,可以一键式拉起镜像和容器

docker-compose是基于python开发的,能运行docker的平台,都能用docker-compose编排管理容器。

本质就是在yaml格式的docker-compose配置模板文件里定义多个容器的启动参数和依赖关系,并使用docker-compose根据这个模板文件的配置启动和管理容器集群。

docker-compose核心就是yml文件,可以定义容器的一切。通过yml配置,直接运行容器

docker:主要服务于单节点。docker没有统一对外提供服务的端口和配置。docker一般都是内部访问。无需使用https。如果要对外以集群和分布式的方式提供统一访问的端口,K8S+ingress

2、docker-compose的常用命令:

必须有docker-compose.yml文件

build:构建服务

ps:列出由docker-compose编排出来的容器

up:创建和启动容器

top:显示容器的进程

logs:查看容器的输出日志

down:删除容器,网络,数据卷

exec:在容器中执行命令

stop/start/restart:停止/启动/重启

scale:指定容器服务启动的数量(副本)。

3、docker-compose的三大概念

项目project -> 包含一个或多个服务service -> 包含一个或多个容器的镜像、映射端口、环境变量等启动参数

1)默认使用项目的目录名做project项目名,支持使用 -p 或 --project-name 来指定项目名;

2)在项目目录里要包含一个 docker-compose 配置模板文件,默认为 docker-compose.yml,支持使用 -f 或 --file 来指定项目的配置模板文件;

3)在配置模板文件里要包含一个或者多个服务,每个服务包含启动容器的名称、镜像、映射端口、环境变量、挂载点、网络模式、依赖关系等容器启动的配置参数。

4、docker-compose.yml文件格式:

version: '3'
#指定docker-compose的文件版本,解析代码的版本,声明解释器
services:
#定义需要运行的服务,声明服务,可以有多个services
  nginx:
    container_name: web1
#指定创建容器的名字
    hostname: nginx
#指定容器的主机名
    build:
#指定构建nginx的容器的上下文,以及dockerfile
      context: /opt/nginx
#指定Dockerfile的位置,如果用镜像换成image:
      dockerfile: Dockerfile
    ports:
      - 1213:80
#直接指定宿主机和容器的端口映射关系
    networks:
#声明给容器指定的IP地址
      mynet:
#自定义网络
        ipv4_address: 172.18.0.10
指定ip地址
    volumes:
       - /opt/www:/usr/local/src/nginx-1.22.0/html
networks:
#创建自定义网桥接口配置,#写在服务配置,赋予容器ip地址,写在定格,大的模块,创建网段!
  mynet:
    driver: bridge
#声明网段类型
    ipam:
#声明网段,IP地址的管理和配置
      config:
        - subnet: 172.18.0.0/16
#子网配置,指定IP地址的范围

三、部署docker-compose

1、docker-compose安装:

2、创建工作目录,编写相关Dockerfile文件

提前将目录和文件准备好,详情可参考昨天的dockerfile部署lnmp

https://blog.csdn.net/koeda1/article/details/134954286?spm=1001.2014.3001.5502

3、编写配置文件docker-compose.yml

编写配置文件docker-compose.yml
使用现有的镜像创建容器(本地/仓库) images: name:tag
或者现场构建,基于Dockerfile

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: /opt/lnmp/nginx
      dockerfile: Dockerfile
    ports:
      - 1314:80
    container_name: nginx_server
    networks:
      lnmp:
        ipv4_address: 172.111.0.10
    volumes:
      - "nginx-data:/usr/local/nginx/html"

  mysql:
    hostname: mysql
    build: 
      context: /opt/lnmp/mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    container_name: mysql_server
    networks:
      lnmp:
        ipv4_address: 172.111.0.20
    privileged: true
#虽然我们登录容器,显示的是root用户,但是是伪root,一旦privileged是true,容器内的root和宿主机的root才拥有一样的权限,再生产中能不给就不给
    volumes:
      - "mysql-data:/usr/local/mysql/"

  php:
    hostname: php
    build:
      context: /opt/lnmp/php/
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    container_name: php_server
    networks:
      lnmp:
        ipv4_address: 172.111.0.30
    volumes:
      - "nginx-data:/usr/local/nginx/html"
      - "mysql-data:/usr/local/mysql"

networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.111.0.0/16

volumes:
  nginx-data:
  mysql-data:

4、根据配置文件创建和启动容器

docker-compose -f docker-compose.yml up -d

docker-compose:命令的开头,使用docker-compose进行容器编排

-f:使用特定的compose模版文件,一般都用docker-compose.yml

-p:project-name:指定项目名称,如果不加,会使用目录名称,可以不加

-d:后台运行

5、****登录容器,进行相关操作

登录到Mysql容器给权限

create database wordpress;

grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';

grant all privileges on . to 'root'@'%' identified by '123456';

flush privileges;

进入php容器,看挂载目录有没有挂载上:

四、访问宿主机IP,安装Wordpress

标签: 运维 linux centos

本文转载自: https://blog.csdn.net/koeda1/article/details/134969033
版权归原作者 koeda1(粉丝冲刺一个亿) 所有, 如有侵权,请联系我们删除。

“【docker四】使用Docker-compose一键部署Wordpress平台”的评论:

还没有评论