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.rhkb.cn/news/264035.html

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

相关文章

(done) 两个矩阵 “相似” 是什么意思?

参考视频&#xff1a;https://www.bilibili.com/video/BV1zu411673J/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考资料&#xff1a;https://baike.baidu.com/item/%E7%9B%B8%E4%BC%BC%E7%9F%A9%E9%98%B5/10369874?frge_a…

核密度分析

一.算法介绍 核密度估计&#xff08;Kernel Density Estimation&#xff09;是一种用于估计数据分布的非参数统计方法。它可以用于多种目的和应用&#xff0c;包括&#xff1a; 数据可视化&#xff1a;核密度估计可以用来绘制平滑的密度曲线或热力图&#xff0c;从而直观地表…

一键生成请求方法的工具 —— OpenAPI Typescript Codegen

文章目录 用法自定义请求参数的方法1&#xff09;使用代码生成器提供的全局参数修改对象2&#xff09;直接定义 axios 请求库的全局参数&#xff0c;比如&#xff1a;全局请求响应拦截器 报错解决 用法 首先下载axios npm install axios官网&#xff1a;https://github.com/f…

基于ssm框架的高校班级管理系统设计与实现

为解决当前高校班级管理中管理方式落后、手段落后及效率低下等问题而以当前主流的互联网技术设计一款高校班级管理系统。该系统采用B/S模式的设计思路而将前端&#xff08;JSP技术&#xff09;和后端&#xff08;SSM框架MySQL数据库&#xff09;整合于一体并通过Java语言代码编…

win10编译openjdk源码

上篇文章作者在ubuntu系统上实践完成openjdk源码的编译&#xff0c;但是平常使用更多的是window系统&#xff0c;ubuntu上编译出来JDK无法再windows上使用。所以作者又花费了很长时间在windows系统上完成openjdk源码的编译&#xff0c;陆续花费一个月的时间终于完成了编译。 本…

前端导出下载文件后提示无法打开文件

问题 项目中的导出文件功能&#xff0c;导出下载后的文件打开提示如下&#xff1a; 原因 对返回的响应数据进行打印&#xff0c;发现响应数据为字符串格式&#xff0c;前期规划的后端返回数据应该 blob 对象的。后经排查后发现是请求头缺少了响应数据格式的配置&#xff0c;应…

.NET Core使用NPOI导出复杂,美观的Excel详解

前言&#xff1a; 这段时间一直专注于数据报表的开发&#xff0c;当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦。客户要求要导出优雅&#xff0c;美观的Excel文档格式的来展示数据&#xff0c;当时的第一想法就是使用NPOI开源库来做数据导出Excel文档&#xf…

Spring Boot对接RocketMQ示例

部署服务 参考RocketMq入门介绍 示例 引入maven依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.2</version></dependency>完整依赖如下&am…

计网 - 深入理解HTTPS:加密技术的背后

文章目录 Pre发展历史Http VS HttpsHTTPS 解决了 HTTP 的哪些问题HTTPS是如何解决上述三个风险的混合加密摘要算法 数字签名数字证书 Pre PKI - 数字签名与数字证书 PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 发展历史 HTTP&#xff08;超文本传输协…

AIGC实战——扩散模型(Diffusion Model)

AIGC实战——扩散模型 0. 前言1. 去噪扩散概率模型1.1 Flowers 数据集1.2 正向扩散过程1.3 重参数化技巧1.4 扩散规划1.5 逆向扩散过程 2. U-Net 去噪模型2.1 U-Net 架构2.2 正弦嵌入2.3 ResidualBlock2.4 DownBlocks 和 UpBlocks 3. 训练扩散模型4. 去噪扩散概率模型的采样5. …

流计算之Flink

文章目录 概要有界无界流集群JobManagerTaskManagersTasks 和算子链Task Slots 和资源 小结 概要 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模…

【C++】类与对象——友元,内部类,匿名对象

类与对象 1 友元1.1 概念&#xff1a;1.2 友元函数1.3 友元类 2 内部类概念&#xff1a;特性&#xff1a;举例&#xff1a; 3 匿名对象Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&#xff01;&#xff01;&am…

mac下使用jadx反编译工具

直接执行步骤&#xff1a; 1.创建 jadx目录 mkdir jadx2.将存储库克隆到目录 git clone https://github.com/skylot/jadx.git 3. 进入 jadx目录 cd jadx 4.执行编译 等待片刻 ./gradlew dist出现这个就代表安装好了。 5.最后找到 jadx-gui 可执行文件&#xff0c;双击两下…

【C语言】指针初阶

正文开始之前&#xff0c;我们要记住一个东西就是&#xff1a;地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

蓝桥杯备战刷题(自用)

1.被污染的支票 #include <iostream> #include <vector> #include <map> #include <algorithm> using namespace std; int main() {int n;cin>>n;vector<int>L;map<int,int>mp;bool ok0;int num;for(int i1;i<n;i){cin>>nu…

Spring事务模板及afterCommit存在的坑

大家好&#xff0c;我是墨哥&#xff08;隐墨星辰&#xff09;。今天的内容来源于两个线上问题&#xff0c;主要和大家聊聊为什么支付系统中基本只使用事务模板方法&#xff0c;而不使用声明式事务Transaction注解&#xff0c;以及使用afterCommit()出现连接未按预期释放导致的…

JAVA算法和数据结构

一、Arrays类 1.1 Arrays基本使用 我们先认识一下Arrays是干什么用的&#xff0c;Arrays是操作数组的工具类&#xff0c;它可以很方便的对数组中的元素进行遍历、拷贝、排序等操作。 下面我们用代码来演示一下&#xff1a;遍历、拷贝、排序等操作。需要用到的方法如下 public…

APP的UI自动化demo(appium+java)

文章目录 appium连接手机java代码实现-第一版第二版-接入testng和隐式等待显示等待 appium连接手机 准备工作 1、查看连接手机模拟器是否连接成功&#xff0c;获取设备名称 执行命令&#xff1a;adb devices 2、查看android内核版本号—>paltformVersion 执行命令&#xf…

springBoot整合Redis(一、Jedis操作Redis)

在springboot环境下连接redis的方法有很多&#xff0c;首先最简单的就是直接通过jedis类来连接&#xff0c;jedis类就相当于是redis的客户端表示。 但是因为现在比较常用的是&#xff1a;StringRedisTemplate和RedisTemplate&#xff0c;所以jedis只做简单的介绍。 一、Jedis…

2023 龙蜥操作系统大会演讲实录:《兼容龙蜥的云原生大模型数据计算系统——πDataCS》

本文主要分三部分内容&#xff1a;第一部分介绍拓数派公司&#xff0c;第二部分介绍 πDataCS 产品&#xff0c;最后介绍 πDataCS 与龙蜥在生态上的合作。 杭州拓数派科技发展有限公司&#xff08;简称“拓数派”&#xff0c;英文名称“OpenPie”&#xff09;是国内基础数据计…