docker-compose 搭建laravel环境

laravel环境包含nginx,mysql,php7.4,redis

一、安装好docker后pull镜像

1.nginx镜像
docker pull nginx:latest

单独启动容器
docker run --name nginx -p 80:80 -d nginx

2.php镜像
docker pull php:7.4-fpm
3.mysql镜像
docker pull mysql:5.7
4.redis镜像
docker pull redis

二、安装配置docker-compose

  • 安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

安装完成后输入 docker-compose -v 可能提示权限不够,就增加权限

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

输入 dcoker-compose -v 显示版本正常即可

  • 编写docker-compose.yml 配置文件,在项目目录中新建一个docker-compose.yml文件
    我的镜像列表如下
    在这里插入图片描述
#docker-compose.yml
#版本,配置文件使用第三套标准
version: "3"
#字段指定了在 Docker Compose 编排中要运行的服务。每个服务都有一个名称,并指定要使用的镜像和容器的配置选项
services:Nginx:#镜像名称image: nginx:latest#容器名称container_name: nginx#端口映射将右边容器端口80映射到左边宿主机端口80ports:- 80:80#目录挂载,将宿主机/home/www/laravelcrm映射到ngxin的/usr/share/nginx/html目录#可以直接使用 [主机:容器]格式,或者使用[主机:容器:ro]格式,后者对于容器来说,数据卷是只读的volumes:- /home/www:/var/www/html:ro- /docker/laravelcrm/nginx/conf:/etc/nginx/conf.d:ro- /docker/laravelcrm/nginx/log:/var/log/nginxPHP:image: php:7.4-fpmcontainer_name: phpports:- 9000:9000volumes:- /home/www:/var/www/html:rw- /docker/laravelcrm/php:/usr/local/etc/phpMYSQL:image: mysql:5.7container_name: mysqlports:- "3306:3306"volumes:- /docker/laravelcrm/mysql:/etc/mysql/conf.d- /docker/laravelcrm/mysql/logs:/logs- /docker/laravelcrm/mysql/data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: rootREDIS:image: redis:latestcontainer_name: redisports:- "6379:6379"volumes:- /docker/laravelcrm/redis/data:/data- /docker/laravelcrm/redis/redis.conf:/etc/redis/redis.conf

此处使用 docker-compose up -d 来启动服务,如果报错可能是某处配置有问题,例如nginx
可使用

docker run nginx

先启动一个nginx容器,然后使用

docker ps -a

来获取nginx容器id,根据容器id再使用

docker exec 9dc06 nginx -t

来查看ngxin使用的默认配置,然后去修改映射配置文件

server {listen       80;server_name  localhost;location / {# 注意 这里写的是nginx容器中的目录root   /var/www/html/laravelcrm/public;index  index.html index.htm index.php;if ( !-e $request_filename ) {rewrite ^/(.*)? /index.php?/$1 last;break;}}location ~ \.php$ {#php是container_name容器名称:9000fastcgi_pass   php:9000;fastcgi_index  index.php;#此处必须改为root的配置目录fastcgi_param  SCRIPT_FILENAME /var/www/html/laravelcrm/public$fastcgi_script_name;#fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}access_log /var/log/nginx/laravelcrm.log main;error_log /var/log/nginx/laravelcrm.error.log;}

使用 docker-compose up -d 启动,或者docker-compose down 停止服务,
注意,修改配置文件必须重启服务
此时运行phpinfo()会发现 Loaded Configuration File (none) ,没有php.ini,并且官方库缺少很多扩展,比较麻烦。所以这里我们使用dockerFile来自定义php,并且安装一个supervisor来监控进程

  1. 在docker-compose.yml文件同级目录添加一个文件 Dockerfile.php74
FROM php:7.4-fpm
MAINTAINER Qin <wuhanqinb@gmail.com>RUN apt-get update -yqq && \apt-get install -y apt-utils openssl libssl-dev && \pecl channel-update pecl.php.net && \apt-get install -y git && \curl -sS https://getcomposer.org/installer | php && \mv composer.phar /usr/bin/composer && \composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/# Install the zip mysqli pdo_mysql extension
RUN apt-get install libzip-dev zip unzip -y && \docker-php-ext-configure zip --with-libzip && \docker-php-ext-install zip mysqli pdo_mysql# Install gd iconv extension
RUN apt-get update && apt-get install -y \libfreetype6-dev \libjpeg62-turbo-dev \libpng-dev \&& docker-php-ext-install -j$(nproc) iconv \&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \&& docker-php-ext-install -j$(nproc) gd# Install redis extension
RUN pecl install redis \&&  rm -rf /tmp/pear \&&  docker-php-ext-enable redis# Install imagick
RUN apt-get install -y libmagickwand-dev imagemagick && \pecl install imagick && \docker-php-ext-enable imagick# Install pcntl
RUN docker-php-ext-install pcntl;# Install opcache
# RUN docker-php-ext-install opcache# Install swoole
# RUN pecl install swoole && docker-php-ext-enable swoole# Install supervisor
RUN apt-get update &&\apt-get install -y supervisor &&\touch /var/run/supervisor.sock &&\chmod 777 /var/run/supervisor.sock &&\unlink /var/run/supervisor.sock# Clean up
RUN apt-get clean && \rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \rm /var/log/lastlog /var/log/faillogCMD ["php-fpm"]EXPOSE 9000
  1. 修改docker-compose.yml文件
#docker-compose.yml
#版本,配置文件使用第三套标准
version: "3"
#字段指定了在 Docker Compose 编排中要运行的服务。每个服务都有一个名称,并指定要使用的镜像和容器的配置选项
services:nginx:#镜像名称image: nginx:latest#容器名称container_name: nginx#端口映射将右边容器端口80映射到左边宿主机端口80ports:- 80:80#目录挂载,将宿主机/home/www/laravelcrm映射到ngxin的/usr/share/nginx/html目录#可以直接使用 [主机:容器]格式,或者使用[主机:容器:ro]格式,后者对于容器来说,数据卷是只读的volumes:- /home/www:/var/www/html:ro- /docker/laravelcrm/nginx/conf:/etc/nginx/conf.d:ro- /docker/laravelcrm/nginx/log:/var/log/nginxphp74:build:context: .dockerfile: ./Dockerfile.php74ports:- 9000:9000volumes:- /home/www:/var/www/html:rw- /docker/laravelcrm/php:/usr/local/etc/php- /docker/laravelcrm/php/supervisor:/etc/supervisor/conf.dmysql:image: mysql:5.7container_name: mysqlports:- "3306:3306"volumes:- /docker/laravelcrm/mysql:/etc/mysql/conf.d- /docker/laravelcrm/mysql/logs:/logs- /docker/laravelcrm/mysql/data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: rootredis:image: redis:latestcontainer_name: redisports:- "6379:6379"volumes:- /docker/laravelcrm/redis/data:/data- /docker/laravelcrm/redis/redis.conf:/etc/redis/redis.conf

如果构建失败,请先更换docker镜像源
/etc/docker/daemon.json

{"registry-mirrors": ["https://9n6c9xa9.mirror.aliyuncs.com","https://reg-mirror.qiniu.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://cr.console.aliyun.com","https://mirror.ccs.tencentyun.com"]
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高频面试题整理(一)

文章目录 平台无关性如何实现&#xff1f;JVM如何加载 .class文件&#xff1f;什么是反射?谈谈ClassLoader谈谈类的双亲委派机制类的加载方式Java的内存模型?JVM内存模型-jdk8程序计数器&#xff1a;Java虚拟机栈局部变量表和操作数栈&#xff1a; Java内存模型中堆和栈的区别…

Linux部署前后端分离项目

目录 一、jdk安装 二、tomcat安装 三、MySQL安装 四、nginx安装 五、配置多个tomcat负载&#xff0c;部署后端项目 六、前端部署 一、jdk安装 1. 上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录&#xff0c;将安装包拖进去 2. 解压安装包 这里需要解压到usr/loc…

17.材质和外观

1.图形学中的材质 在图形学中&#xff0c;材质&#xff08;Material&#xff09;是用来描述物体外观和表面特性的属性集合。它包含了控制光的反射、折射、吸收以及其他光学效果的信息&#xff0c;从而决定了物体在渲染过程中的外观。 渲染方程中那一项和材质有关&#xff1f; …

vue项目的前端工程化思路webpack(持续更新中)

写在前面&#xff1a;现在的前端网页功能丰富&#xff0c;特别是SPA&#xff08;single page web application 单页应用&#xff09;技术流行后&#xff0c;JavaScript的复杂度增加和需要一大堆依赖包&#xff0c;还需要解决Scss&#xff0c;Less……新增样式的扩展写法的编译工…

设计模式学习笔记 - 面向对象 - 8.实践:贫血模型和充血模型的原理及实践

1.Web开发常用的贫血MVC架构违背OOP吗&#xff1f; 前面我们依据讲过了面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格&#xff0c;基于接口而非实现编程和多用组合少用继承设计思想。接下来&#xff0c;通过实战来学习如何将这些理论应用到实际的开发中。 大部…

第二节:Vben Admin 登录逻辑梳理和对接后端准备

系列文章目录 上一节&#xff1a;第一节&#xff1a;Vben Admin介绍和初次运行 文章目录 系列文章目录前言项目路径的概述一、登录逻辑梳理loginApi接口查看Mock 二、后端程序对接准备关闭Mock 总结 前言 第一节&#xff0c;我们已经配置了前端环境&#xff0c;运行起来了我们…

zabbix监控业务数据

前言 监控系统除了监控os和数据库性能相关的指标外&#xff0c;业务数据也是重点监控的对象。 一线驻场的运维同学应该深有体会&#xff0c;每天需要向甲方或者公司反馈现场的数据情况&#xff0c;正常情况下一天巡检两次&#xff0c;早上上班后和下午下班前各一次。监控项目…

复旦大学EMBA联合澎湃科技:共议科技迭代 创新破局

1月18日&#xff0c;由复旦大学管理学院、澎湃新闻、厦门市科学技术局联合主办&#xff0c;复旦大学EMBA项目、澎湃科技承办的“君子知道”复旦大学EMBA前沿论坛在厦门成功举办。此次论坛主题为“科技迭代 创新破局”&#xff0c;上海、厦门两地的政策研究专家、科学家、科创企…

RDMA内核态函数ib_post_recv()源码分析

接上文&#xff0c;上文分析了内核rdma向发送队列添加发送请求的函数ib_post_send&#xff0c;本文分析一下向接收队列添加接收请求的函数ib_post_recv。其实函数调用流程与上文类似&#xff0c;不再重复说明&#xff0c;可参考链接。 函数调用过程 最终会调用到这个函数 下面…

力扣随笔删除有序数组中的重复项(简单26)

思路&#xff1a;根据类似于滑动窗口的思想&#xff0c;定义一个指针&#xff1b;使指针左边的区域全部为不重复元素&#xff08;包括指针所指的数字&#xff09; 以示例2为例&#xff0c;left&#xff1a;红色加粗 遍历指针i&#xff1a;黑色加粗 窗口范围&#xff0c;左边界到…

剪辑视频调色怎么让画质变得清晰 视频剪辑调色技巧有哪些方面 剪辑视频免费的软件有哪些 会声会影调色在哪里 会声会影模板素材

视频调色的作用有很多&#xff0c;除了进行风格化剪辑以外&#xff0c;还可以让作品的画质变得清晰。通过调色来增强画面的清晰度&#xff0c;在观感上也会显得十分自然。视频调色的技巧有很多&#xff0c;并且原理大都十分简单。有关剪辑视频调色怎么让画质变得清晰&#xff0…

linux系统---httpd

目录 Internet的起源 一、http协议——超文本传输协议 1.http相关概念 二、HTTP请求访问的完整过程 1、 建立连接 2、 接收请求 3、 处理请求 常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS 3.1 常见的HTTP方法 3.2 GET和POST比较 4、访问资源 …