【Docker-compose】搭建php 环境

文章目录

  • Docker-compose容器编排
    • 1. 是什么
    • 2. 能干嘛
    • 3. 去哪下
    • 4. Compose 核心概念
    • 5. 实战 :linux 配置dns 服务器,搭建lemp环境(Nginx + MySQL (MariaDB) + PHP )
    • 要求
    • 6. 配置dns解析
      • 配置 lemp

Docker-compose容器编排

1. 是什么

Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器

  • · Docker-Compose是Docker官方的开源项目, 负责实现对Docker容器集群的快速编排。

2. 能干嘛

docker建议我们每一个容器中只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来但是这样我们又面临了一个问题?

如果我需要同时部署好多个服务,难道要每个服务单独写Dockerfile然后在构建镜像,构建容器,这样累都累死了,所以docker官方给我们提供了docker-compose多服务部署的工具

例如要实现一个Web微服务项目,除了Web服务容器本身,往往还需要再加上后端的数据库mysql服务容器,redis服务器,注册中心eureka,甚至还包括负载均衡容器等等。。。。。。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

3. 去哪下

  • 官网 · https://docs.docker.com/compose/compose-file/compose-file-v3/
  • https://docs.docker.com/compose/install/

加速下载地址

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

添加可执行权限

chmod +x /usr/local/bin/docker-compose

查看是否安装成功

docker-compose --version
  • 卸载

    sudo rm / usr/ local/ bin/docker-compose
    

4. Compose 核心概念

  • Compose使用的三个步骤

    编写Dockerfile定义各个微服务应用并构建出对应的镜像文件

    使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。

    最后,执行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线

  • Compose常用命令

    docker-compose -h # 查看帮助

    docker-compose up # 启动所有docker-compose服务

    docker-compose up -d # 启动所有docker-compose服务并后台运行

    docker-compose down # 停止并删除容器、网络、卷、镜像。

    docker-compose exec yml里面的服务id # 进入容器实例内部

    docker-compose exec docker-compose.yml文件中写的服务id /bin/bash

    docker-compose ps # 展示当前docker-compose编排过的运行的所有容器

    docker-compose top # 展示当前docker-compose编排过的容器进程

    docker-compose logs yml里面的服务id # 查看容器输出日志

    docker-compose config # 检查配置

    docker-compose config -q # 检查配置,有问题才有输出

    docker-compose restart # 重启服务

    docker-compose start # 启动服务

    docker-compose stop # 停止服务

docker-machine 命令安装

 base=https://get.daocloud.io/docker/machine/releases/download/v0.14.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine

5. 实战 :linux 配置dns 服务器,搭建lemp环境(Nginx + MySQL (MariaDB) + PHP )

要求

1) 在Linux虚拟机中,配置ip地址为192.168.90.215(x为自己学号后3位,y自行指定),并且虚拟机能正常访问互联网;

2) 配置DNS服务器,域为 cr.com(abc为自己的姓名首字母),配置完成后,用nslookup进行正向和反向解析的校验;

3) 配置LEMP(即 Nginx + MySQL (MariaDB) + PHP),通过真实主机访问 www.cr.com(abc为自己的姓名首字母)能访问搭建好的LEMP。(不能去修改hosts文件做本地解析,而必须使用自己配置的DNS)

6. 配置dns解析

首先给linux 配置好静态ip http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip (打不开就换下面的地址)

//to do

编辑 /etc/named.conf 文件

vim /etc/named.conf

将 listen on 和 query 值改为any

配置dns解析 cr.com 到192.168.90.215

vim /etc/named.rfc1912.zones 

文件末尾添加

zone "cr.com" IN {
   type master;
   file "cr.com.zone";
  allow-update { none; };
};
zone "215.90.168.192.in-addr.arpa" IN {
        type master;
        file "com.cr.loop";
        allow-update { none; };
};

:wq 进行保存

编辑对应配置文件 vim /var/named/com.cr.loop

加入以下内容

$TTL 1D
@       IN SOA  cr.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     cr.com.
        NS      ns.cr.com.
ns      A       192.168.90.215
201     PTR     www.cr.com.
201     PTR     email.cr.com.

编辑 vim /var/named/cr.com.zone

加入以下内容

$TTL 1D
@       IN SOA  cr.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.90.215
        AAAA    ::1
        NS      ns.server.com.
ns      IN A    192.168.90.215
www     IN A    192.168.90.215
email   IN A    192.168.90.215

重启dns

systemctl restart named

查看dns 状态

systemctl status named

启动成功

正向解析 nslookup cr.com

反向解析 nslookup 192.168.90.215

配置 lemp

编写docker-compose.yml 文件到/mydocker/lemp

vim /mydocker/lemp/docker-compose.yml 填入以下内容

nginx:
    build: ./nginx/
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - app

php:
    build: ./php/
    expose:
        - 9000
    links:
        - mysql
    volumes_from:
        - app

app:
    image: php:7.0-fpm
    volumes:
        - .:/var/www/html
    command: "true"

mysql:
    image: mysql:latest
    volumes_from:
        - data
    environment:
        MYSQL_ROOT_PASSWORD: secret
        MYSQL_DATABASE: bookmarks
        MYSQL_USER: cr
        MYSQL_PASSWORD: cr123

data:
    image: mysql:latest
    volumes:
        - /var/lib/mysql
    command: "true"

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 8080:80
    links:
        - mysql
    environment:
        PMA_HOST: mysql

在/mydocker/lemp/当中创建 nginx/Dockerfile

填入

FROM nginx:latest

COPY ./default.conf /etc/nginx/conf.d/default.conf

创建 default.conf

填入以下内容

 

server {

  listen 80 default_server;

  root /var/www/html;

  index index.html index.php;

 

  charset utf-8;

 

  location / {

try_files $uri $uri/ /index.php?$query_string;

  }

 

  location = /favicon.ico { access_log off; log_not_found off; }

  location = /robots.txt  { access_log off; log_not_found off; }

 

  access_log off;

  error_log  /var/log/nginx/error.log error;

 

  sendfile off;

 

  client_max_body_size 100m;

 

  location ~ \.php$ {

  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_intercept_errors off;

fastcgi_buffer_size 16k;

 fastcgi_buffers 4 16k;

  }

 

  location ~ /\.ht {

 deny all;

  }

}

 

在/mydocker/lemp/当中创建 php/Dockerfile

填入

FROM php:7.0-fpm

RUN docker-php-ext-install mysqli

 

编排docker 容器

 docker-compose up -d 

Docker ps 查看容器运行情况

成功启动

本机通过ip 访问 php 环境和nginx 环境

访问成功

将本机配置dns的服务器为 虚拟机即192.168.90.215

打开cmd 窗口对 cr.com 进行ping 测试

成功ping通

通过域名访问搭建的php环境

修改nginx配置文件

最终域名直接访问网站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/790768.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开学C++:类和对象(上)

引言:在学习了C的入门级知识之后,现在就让我们一起进入类和对象的学习吧,该知识点我将分为上,中,下三个部分对其进行讲解。 更多有关C语言和数据结构的知识详解可前往个人主页:计信猫 目录 一,类…

MySql性能调优01-[数据结构和索引]

数据结构和索引 什么是索引索引的种类常见索引数据结构和区别二叉树 红黑树 什么是索引 索引的种类 在Mysql中索引是在存储引擎层实现的,而不是在服务层实现的 按数据结构分:Btree索引、Hash索引、Full-text索引按存储结构分:聚簇索引、非聚…

51单片机:电脑通过串口控制LED亮灭(附溢出率和波特率详解)

一、功能实现 1.电脑通过串口发送数据:0F 2.点亮4个LED 二、注意事项 1.发送和接受数据的文本模式 2.串口要对应 3.注意串口的波特率要和程序中的波特率保持一致 4.有无校验位和停止位 三、如何使用串口波特率计算器 1.以本程序为例 2.生成代码如下 void Uar…

d3dcompiler_43.dll文件是什么?如何快速有效的解决d3dcompiler_43.dll文件丢失问题

dcompiler_43.dll 是一个Windows系统中的系统文件,属于DirectX软件的一部分。这个dcompiler_43.dll(动态链接库)文件主要用于处理与3D图形编程有关的任务,是运行许多游戏和高级图形程序必需的组件之一。那么如果电脑丢失d3dcompil…

Qt/QML学习-PathView

QML学习 PathView例程视频讲解代码 main.qml import QtQuick 2.15 import QtQuick.Window 2.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")color: "black"PathView {id: pathViewanchors.fill: parentmodel: ListModel {List…

scipy库中,不同应用滤波函数的区别,以及FIR滤波器和IIR滤波器的区别

一、在 Python 中,有多种函数可以用于应用 FIR/IIR 滤波器,每个函数的使用场景和特点各不相同。以下是一些常用的 FIR /IIR滤波器应用函数及其区别: from scipy.signal import lfiltery lfilter(fir_coeff, 1.0, x)from scipy.signal impo…

轻松搭建RAG:澳鹏RAG开发工具

我们很高兴地宣布推出RAG开发工具,这是澳鹏大模型智能开发平台的一项新功能。此功能可帮助团队轻松创建高质量的检索增强生成 (RAG) 模型。 什么是 RAG? 检索增强生成 (RAG) 通过利用大量外部数据源(例如企业的知识库)显著增强了…

springboot篮球馆管理系统-计算机毕业设计源码21945

目 录 摘要 1 绪论 1.1选题背景 1.2研究意义 1.3论文结构与章节安排 2 篮球馆管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 …

Python 爬虫与 Java 爬虫:相似之处、不同之处和选项

在信息时代,网络上可用的数据量巨大且不断增长。为了从这些数据中提取有用的信息,爬虫已成为一种重要的技术。Python 和 Java 都是流行的编程语言,都具有强大的爬虫功能。本文将深入探讨 Python 爬虫和 Java 爬虫之间的差异,以帮助…

「媒体邀约」上海请媒体的费用

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 上海无疑是最具活动的城市之一,各种大大小小的论坛、发布会、展览展会应接不暇,那么在上海做活动想邀请媒体进行宣传报道,需要多少费用呢:…

C++ 【 PCL 】点云添加随机均匀噪声及源代码

PCL向点云添加均匀随机噪声&#xff1a; #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/common/random.h>int main() {// 加载点云文件pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::Poi…

深入剖析数据库索引

写在前面&#xff1a; 此博客内容已经同步到我的博客网站&#xff0c;如需要获得更优的阅读体验请前往https://mainjaylai.github.io/Blog/blog/database 文章目录 如何验证我们正在使用InnoDB引擎 主键如果你没有自己创建任何主键会发生什么&#xff1f;关键字和索引之间的区别…

【HarmonyOS NEXT】鸿蒙 代码混淆

代码混淆简介 针对工程源码的混淆可以降低工程被破解攻击的风险&#xff0c;缩短代码的类与成员的名称&#xff0c;减小应用的大小。 DevEco Studio提供代码混淆的能力并默认开启&#xff0c;API 10及以上版本的Stage模型、编译模式为release时自动进行代码混淆。 使用约束 …

MD5加密和注册页面的编写

MD5加密 1.导入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5; //md5加密后的密码 const md5PwdMd5.hashStr("123456").toUpperCase(); 遇见的问题及用到的技术 注册页面 register.vue代码 <template><div class"wappe…

GBPC5010-ASEMI逆变箱专用GBPC5010

编辑&#xff1a;ll GBPC5010-ASEMI逆变箱专用GBPC5010 型号&#xff1a;GBPC5010 品牌&#xff1a;ASEMI 封装&#xff1a;GBPC-4 批号&#xff1a;2024 现货&#xff1a;50000 最大重复峰值反向电压&#xff1a;1000V 最大正向平均整流电流(Vdss)&#xff1a;50A 功…

越南语是一门什么样的语言?如何学好越南语?

越南语是一种南亚语系越芒语族的语言&#xff0c;具有丰富的汉语借词&#xff0c;尤其在抽象概念的表达上&#xff0c;汉越词汇占有很大比例。作为一种声调语言&#xff0c;越南语拥有六个声调&#xff0c;这使得其发音具有音乐性和节奏感。它是一种孤立语&#xff0c;依赖于语…

Xshell配置ssh免密码登录(密钥登陆)

文章目录 一、Xshell登陆步骤 一、Xshell登陆步骤 1.生成客户端的公钥私钥 2.生成公钥文件 3.生成私钥文件 4.将公钥传输进要登录的服务器中 5.修改公钥文件名为authorized_keys (authorized_keys是用于存储公钥的特殊文件,如果已经有了这份文件,可以在末尾追加) 6.连…

芋道源码 yudao-cloud 文档,视频,开发指南如何看全部

进入官网后可以看到相关内容 但是后端手册开始就看不了了 必须加入知识知识星球才行&#xff0c;很烦 闲**鱼搜索用户 水城打坐的藤壶 找到这个链接 这下大家都懂了吧 现在就可以看到看不到的内容了 在线文档的弹窗可技术去除&#xff0c;很简单 直接起飞哈 包括更新sq…

LIO-SAM编译ubuntu20.04 Noetic

一、下载 mkdir -p ~/lio_sam_ws/src cd ~/lio_sam_ws/src git clone https://github.com/TixiaoShan/LIO-SAM.git cd ..二、编译&&解决报错 catkin_make报错如下 解决方案&#xff1a; 第一步&#xff1a; sudo add-apt-repository ppa:borglab/gtsam-release-4…

2.快速搭建 SpringBoot hello world

环境要求&#xff1a; Spring Boot 2.6.1 需要Java 8&#xff0c;并且与Java 15&#xff08;包括&#xff09;兼容。 还需要Spring Framework 5.2.10.RELEASE或 更高版本。 注意&#xff1a;Spring Boot 3.0版本以上就需要 Java 8以上了&#xff0c;即不能再使用 Java8版本了。…