DOCKER编排系统(LNMP)

一、Docker-Compose 简介

1、Docker-Compose 项目是 Docker 官方的开源项目,负责实现对Docker容器集群的快速编排。
2、Docker-Compose 将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。
Docker-Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Docker-Compose 项目由 Python 编写,调用 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

Docker-Compose 安装

方法有多种这里我们使用官方推荐的

[root@docker01 ~]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#安装Docker-Compose:
[root@docker01 ~]# chmod +x /usr/local/bin/docker-compose
#查看版本 :
[root@docker01 ~]# docker-compose version

三、Docker-Compose 常用命令

显示正在运行的进程:docker-compose top
后台运行:docker-compose up -d
停止并清除:docker-compose down 停止和删除容器、网络、卷、镜像。
重起项目中的服务:docker-compose restart
启动已存在的服务容器:docker-compose start

四、Docker-Compose 编排文件详解

#创建编写文件
[root@server4 haproxy]# cat docker-compose.yaml 
version: "3"#Compose的版本,通常我们使用3
services: #服务
  web:
    image: nginx#指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。
    ports:#映射端口
      - "80:80"
    volumes:#挂载
      - ./web:/usr/local/nginx/htdocs#web界面
      - ./project:/var/www/html/project##把PHP文件挂载到本地
      - ./default.conf:/etc/nginx/conf.d/default.conf#nginx配置文件
      - ./log/nginx:/var/log/nginx#nginx日志
    networks:#关键字指定自定义网络
      - webnet
  php:
    image: lince/php:5.6-fpm#这个镜像是我们自己定义的在当前目录下Dockerfile
    volumes:挂载到宿主机(前面是宿主机)
      - ./project:/var/www/html/project#把PHP挂载到本地
    networks:
      - webnet
  mysql: # 添加 mysql 服务
    image: mysql:5.7
    ports:
      - "3306:3306"
    volumes:
      - ./mysql:/var/lib/mysql#数据挂载到本地
      - ./my.cnf:/etc/mysql/my.cnf#配置文件挂载道本地
    restart: always
    environment:
      - TZ=Asia/Shanghai # 设置时区
      - MYSQL_ROOT_PASSWORD=zxcvbnm # 设置 root 用户密码
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 设置编码
    networks:
      - webnet
networks:
  webnet:
#创建default.conf
[root@server4 haproxy]# cat default.conf 
server {
    listen          80;
    index           index.php index.html;
    server_name     _;
    root            /var/www/html/project;
    access_log      /var/log/nginx/access.log;
    error_log       /var/log/nginx/error.log;
    location / {
        root /usr/local/nginx/htdocs;
        index index.html index.htm;
}
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
#PHP镜像
[root@server4 haproxy]# ls
default.conf  docker-compose.yaml  Dockerfile  log  mysql  project  web
[root@server4 haproxy]# cat Dockerfile 
FROM php:5.6-fpm
RUN apt-get update \ 
&& docker-php-ext-install pdo pdo_mysql
#并执行Dockerfile创建镜像
[root@server4 haproxy]# docker build -t php:v1 .
#创建project并在里面创建cnnect_mysql.php和phpinfo.php文件
[root@server4 haproxy]# ls project/
cnnect_mysql.php  phpinfo.php
[root@server4 haproxy]# cat project/cnnect_mysql.php 
<?php
    try{
        $conn = new PDO("mysql:host=mysql:3306;dbname=school", "root", "zxcvbnm");
        echo "连接成功\n";
        $stmt = $conn->prepare("SELECT * FROM school.student");
        $stmt->execute();
        $stmt->setFetchMode(PDO::FETCH_ASSOC);
        foreach ($stmt->fetchAll() as $key => $value) {
            echo $value["name"] . "\n";
        }
    }catch(PDOException $e){
        echo $e->getMessage();
    }
?>
[root@server4 haproxy]# cat project/phpinfo.php 
<?php phpinfo();
ls
#创建日志
[root@server4 haproxy]# mkdir -p  log/nginx/
#创建mysql来收集数据
[root@server4 haproxy]# mkdir mysql
#创建web静态界面
[root@server4 haproxy]# mkdir web
#挂载数据库的配置文件(事先拷贝一份否则启动容器后my.cnf会是个空文件)
[root@server4 haproxy]# touch web/index.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值