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://xiahunao.cn/news/2809498.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(三)

在人工智能成为我们日常互动中无处不在的一部分的时代&#xff0c;与大型语言模型(llm)有效沟通的能力是无价的。“良好提示的26条原则”为优化与这些复杂系统的交互提供了全面的指导。本指南证明了人类和人工智能之间的微妙关系&#xff0c;强调清晰、专一和结构化的沟通方法。…

【数据结构初阶 8】二叉树练习题

文章目录 &#x1f308; 01. 求二叉树结点个数&#x1f308; 02. 求二叉树叶结点个数&#x1f308; 03. 求二叉树的高度&#x1f308; 04. 求第 k 层结点个数&#x1f308; 05. 查找值为 x 的结点&#x1f308; 06. 判断是否是单值二叉树&#x1f308; 07. 判断两棵树是否相同&…

单片机05__串口USART通信__按键控制向上位机传输字符串

串口USART通信 通用UART介绍 1.通信的概念 计算机与外界进行信息交换的过程称之为通信。 在通信的过程中&#xff0c;通信双方都需要遵守的规则称之为通信协议。 硬件协议&#xff1a;将数据以什么样的方式传输过去 软件协议&#xff1a;将数据以什么样的顺序传输过去 2.常用…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 2月26日,星期一

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年2月26日 星期一 农历正月十七 1、 气象台&#xff1a;3月初之前南方大部将维持阴雨雪天气。 2、 据海关统计&#xff0c;京津冀协同发展十年成效显著&#xff0c;外贸总量跨两个万亿台阶。 3、 2024年研考初试成绩今天起…

逆向茶话会笔记

安卓逆向 用用burp设置代理或者用charles抓包 windows httpopen 类比web站点渗透测试 推荐书 飞虫 安卓大佬不怎么打ctf 喜欢在看雪和吾爱破解 提问环节 q websocket grpc抓包有什么推荐的工具&#xff1f; a 不太了解 游戏安全和llvm 既要逆游戏也要逆外挂 逆游戏入…

自己测试CSDN质量分3

你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好 质量分测试网址

【Leetcode】938. 二叉搜索树的范围和

文章目录 题目思路代码结论 题目 题目链接 给定二叉搜索树的根结点 root&#xff0c;返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1&#xff1a; 输入&#xff1a;root [10,5,15,3,7,null,18], low 7, high 15 输出&#xff1a;32 示例 2&#xff1a; 输入…

【VSCode】解决VSCode远程连接问题:远程主机可能不符合 glibc 和 libstdc++

今天用VSCode进行ssh连接时&#xff0c;提示“远程主机可能不符合 glibc 和 libstdc VSCode 服务器的先决条件”。查了一下发现这个问题主要是由于VSCode在一月份发布的最新版本v1.86中要求远程主机 glibc>2.28导致的&#xff0c;所以ssh连接Ubuntu 18.04的时候就会提示这个…

apachectl: line 79: 20233 Segmentation fault (core dumped) $HTTPD “$@“

[TOC](apachectl: line 79: 20233 Segmentation fault (core dumped) $HTTPD “$”) 1、问题描述 apache 启动报错 apachectl: line 79: 20233 Segmentation fault (core dumped) $HTTPD “$” 2、问题分析 参考链接: https://stackoverflow.com/questions/43726930/apache…

【JVM】线上一次fullGC排查思路

fullGC问题背景 监控告警发现&#xff0c;今天开始我们线上应用频繁出现fullGC&#xff0c;并且每次出现后磁盘都会被占满 查看监控 查看监控发现FULLGC的机器均为同一个机房的集器&#xff0c;并且该机房有线上error报错&#xff0c;数据库监控对应的时间点也有异常&#x…

sonar-java 手写一个规则-单元测试分析

前言 最近做项目&#xff0c;定制sonar规则&#xff0c;提高Java代码质量&#xff0c;在编写的sonar规则&#xff0c;做验证时&#xff0c;使用单元测试有一些简单的心得感悟&#xff0c;分享出来。 自定义规则模式 sonar的自定义规则很简单&#xff0c;一般而言有2种模式可…

JAVA工程师面试专题-《Mysql》篇

目录 一、基础 1、mysql可以使用多少列创建索引&#xff1f; 2、mysql常用的存储引擎有哪些 3、MySQL 存储引擎&#xff0c;两者区别 4、mysql默认的隔离级别 5、数据库三范式 6、drop、delete 与 truncate 区别&#xff1f; 7、IN与EXISTS的区别 二、索引 1、索引及索…

数据库应用:Windows 部署 MySQL 8.0.36

目录 一、实验 1.环境 2.Windows 部署 MySQL 8.0.36 3.Windows配置环境变量 4.Navicat链接MySQL 二、问题 1.安装MySQL 报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机软件版本IP备注WindowsMySQL8.0.36localhost 2.Windows 部署 MySQL 8.0.…

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:MySQL8

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库&#xff0c;终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手&#xff0c;按照 MySQL &#xff0c; Nacos &#xff0c; Redis &#xff0c; Nginx &#xff0c; Gateway &#xff0c; Auth &#xff0c;…

顺序表知识点——顺序表的增删查改

目录 准备文件 创建顺序表蓝图 顺序表初始化函数接口 顺序表的销毁函数接口 顺序表的打印函数接口 顺序表的插入函数接口 顺序表的删除函数接口 从本节开始&#xff0c; 复习数据结构。 空间复杂度还有时间复杂度之后利用例题学习。 这节先学习顺序表的增删查改。 首…

Android Gradle开发与应用 (二) : Groovy基础语法

1. Groovy是什么 Groovy是基于JVM虚拟机的一种动态语言&#xff0c;语法和Java非常相似&#xff0c;并能够无缝地与Java代码集成和互操作&#xff0c;增加了很多动态类型和灵活的特性。(闭包、DSL) 语法和Java非常相似这个特点&#xff0c;意味着&#xff0c;如果我们完全不懂…

[ffmpeg] x264 配置参数解析

背景 创建 x264 编码器后&#xff0c;其有一组默认的编码器配置参数&#xff0c;也可以根据需要修改参数&#xff0c;来满足编码要求。 具体参数 可修改的参数&#xff0c;比较多&#xff0c;这边只列举一些常用的。 获取可以配置的参数 方式1 查看 ffmpeg源码 libx264.c…

通用检测大模型 | 华科白翔团队提出以对象为中心的基础模型GLEE

本文首发: AIWalker https://arxiv.org/abs/2312.09158 https://glee-vision.github.io AIWalker后台回复【GLEE】即可下载原文与译文。 在这项工作中&#xff0c;我们提出了GLEE&#xff1a;一个对象级的基础模型&#xff0c;用于定位和识别图像和视频中的对象。 通过一个统一…

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

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

查看笔记本电池健康状态-windows11

在 Windows 11 中获取详细的电池报告 Windows 11 中内置的 Powerfg 命令行选项来生成电池报告。 在任务栏上选择“搜索”&#xff0c;键入“cmd”&#xff0c;长按&#xff08;或右键单击&#xff09;“命令提示符”&#xff0c;然后选择“以管理员身份运行” ->“是”。 …