返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >如何在Mac上通过docker配置PHP开发环境
  • 113
分享到

如何在Mac上通过docker配置PHP开发环境

2024-04-02 19:04:59 113人浏览 泡泡鱼
摘要

目录使用Docker-compose配置开发环境什么是docker-compose目录结构Mysql测试PHPDockerfilephp服务中遇到的坑php.iniNginxapp.

使用docker-compose配置开发环境

一般一个基本的PHP开发环境包括PHP、PHP-FPM、WEB服务器mysql数据库,另外还会有Redis或memcache等相关NoSQL服务。我主要是通过docker-compose来配置服务。

什么是docker-compose

docker-compose是一个通过YAML文件来定义项目,项目中包含单个或多个容器服务。一般配置文件名为:docker-compose.yml。

目录结构

你可以按自己的喜好组织项目,下面是我用的方法,app 目录放的是应用的代码,services 下面是创建服务需要用的东西,有些服务需要我们自己去创建镜像,在一个 Dockerfile 文件里说明一下你想要的镜像是什么样的。在创建自定义镜像的时候也可能需要用到一些额外的文件,比如一些配置文件,一般在创建镜像的时候会把这些配置文件复制到镜像里。

Mysql

mysql是数据服务,先去给这个服务添加一个数据卷,然后在这个服务里使用一下这个数据卷,把数据库生成的数据放到这里,这样即使我们删除容器,数据服务里的数据也会保留在主机上,下回创建容器的时候,可以继续使用已有的数据。在 volumes 下面,添加一个名字是 mysql 的数据卷:

volumes: mysql: driver: local

然后再去添加一个名字是 MySQL的服务,指定一下服务使用的镜像,这个镜像我们也可以用自己创建的 Dockerfile 去创建一下,或者你不打算定制镜像,也可以直接使用现成的,这里我用了 mysql:5.7 这个镜像。注意最好设置具体要使用的版本。

这个镜像里有一些环境变量,我们可以在定义服务的时候去设置一下它们的值,这里我设置了 root 用户的密码,要创建的数据库,用户名,还有密码,你可以 根据自己的需求去修改这些变量的值。

在 mysql 服务上我用了 volumes 为它指定了一个 MySQL 数据卷,挂载的位置是容器的 /var/lib/mysql ,这是存储数据库的默认的地方。因为我本机安装了MySQL服务,3306端口被占用了,所以指定6306端口映射到容器的3306

version: "3"services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWord: "root" MYSQL_DATABASE: "app" MYSQL_USER: "app" MYSQL_PASSWORD: "123456" volumes: - ./services/mysql/data:/var/lib/mysql ports: - "6306:3306"

测试

在我们的 compose 文件里现在已经有了一个叫 mysql 的服务,在命令行工具下,进入到项目所在的目录,执行:

docker-compose up

然后你就会在终端上看到安装镜像和启动容器的过程,然后另开一个命令终端,执行:

docker-compose execmysql bash

进入mysql容器中,然后进入数据库检查一下:

mysql -uroot -pshow databases;

+--------------------+| Database           |

+--------------------+| infORMation_schema |

| app                |

| mysql              |

| performance_schema || sys                |

+--------------------+5 rows in set (0.03 sec)

这个时候我们发现mysql容器已经可用了

php

定义一个解释 php 的服务,我打算自己创建这个服务用的镜像,所以用了 build,而不是 image 。我告诉了 docker 自己要创建的这个镜像要使用的那个 Dockerfile 文件的位置(./services/php/Dockerfile)。

volumes 下面是服务用的数据卷,我把 compose 文件所在目录下的 app 这个目录,挂载到了容器的 /www/html/app 这个位置上了。这样我可以直接修改项目的代码,然后立即看到结果;同时由于本机9000端口被占用,指定9090端口映射到容器的9000端口

php: build: context: ./services/php dockerfile: Dockerfile volumes: - ./app:/www/html/app ports: - "9090:9000"

Dockerfile

构建 php 服务的镜像用的 Dockerfile 是 ./services/php/Dockerfile。FROM,设置了一下这个镜像要基于哪个镜像去创建,我用了 php:7.1-fpm 这个官方提供的镜像。RUN 了几行命令,主要是去安装一些软件包,比如一些额外的 php 扩展。在安装这些扩展之前 ,你需要先安装扩展依赖的一些其它的软件包,这里的 libpng12-dev,libjpeg-dev,就是 gd 这个 php 扩展需要的软件包。然后我又 COPY 了配置文件到镜像里面。

FROM php:7.1-fpm

RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev \

  && rm -rf /var/lib/apt/lists/* \

  && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \

  && docker-php-ext-install gd mysqli pdo_mysql zip opcache

COPY ./config/php.ini /usr/local/etc/php/conf.d/php.ini

php服务中遇到的坑

PHP这个镜像中软件是使用的Debian的源,因为众所周知的缘故会导致镜像安装不成功,如图所示:

这个时候我们就需要更换源了,第一次换成了中科大的源,然后发现不行,第二次更换成了阿里云的源,完美完成镜像安装,修改过后的Dockerfile如下:

FROM php:7.1-fpm

RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \

  && apt-get update && apt-get install -y libpng12-dev libjpeg-dev \

  && rm -rf /var/lib/apt/lists/* \

  && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \

  && docker-php-ext-install gd mysqli pdo_mysql zip opcache

COPY ./config/php.ini /usr/local/etc/php/conf.d/php.ini

使用sed命令搜索软件源文件,把Debian域名修改为阿里云域名

php.ini

自定义的 php 配置。把你想要的 php 配置放到这个文件里,重新 build 镜像,然后再次启动 php 服务的时候会用新的镜像重新创建容器,这样配置就会生效了。

memory_limit = 256Mpost_max_size = 100Mupload_max_filesize = 100M

Nginx

用 image 指定了要使用的镜像,ports 设置了发布的端口号,让主机上的 8000 对应容器的 80 。depends_on 可以设置服务的依赖,我让 nginx 服务依赖之前定义的 php ,这样会先启动 php ,然后再启动 nginx 。

另外我又用了 volumes 自己设置了一个数据卷,让主机上包含 nginx 配置文件的目录,对应容器里的 nginx 服务的配置文件目录,这样我就可以直接在本机上修改 nginx 的配置文件,然后重新启动一下 nginx 服务,配置就可以生效了。这种方法适用在开发环境上,因为修改了配置不需要重新 build 镜像,在生产环境中,你需要自己 build 这个 nginx 镜像,把想要的配置直接复制到镜像里去。在开发阶段有的时候我们需要查看nginx的日志,然后我配置了日志目录映射到容器,最后一个地址是代码目录

nginx:    image: nginx:1.12.2    ports:

      - "8000:80"    depends_on:

      - php    volumes:

      - ./services/nginx/config:/etc/nginx/conf.d

      - ./services/nginx/logs:/etc/nginx/logs/

      - ./app:/www/html/app

app.conf

./services/nginx/config/app.conf,这是一个最基本的 nginx 配置文件,设置了应用的 root 是在 /www/html/app 这里,我们已经把主机上的 app 目录挂载到了容器里的 /www/html/app 这个地方。

注意这条指令:fastcgi_pass php:9000; 这里的 php 是我们定义的 php 这个服务的名字,在 compose 文件里定义的服务,它们之间可以使用服务的名字相互进行沟通,因为 docker 内置了 DNS 功能。


server {   
listen       80; 
server_name  localhost; 
root         /www/html/app;
# access_log  /etc/nginx/logs/app.access.log  main;
location / {        
	index  index.html index.htm index.php; 
	autoindex   on;
	#  include    /usr/local/etc/nginx/conf.d/php-fpm;
	#  # include  /usr/local/etc/nginx/conf.d/pathinfo.conf;
	if (!-e $request_filename) { 
	###一级目录下
	rewrite ^/(.*)$ /index.php/$1 last; ###域名下的二级目录
	#rewrite ^/html/(.*)$ /uuabc_home/index.php/$1 last;
	}   
}
location = /info { 
	allow   127.0.0.1; 
	deny    all;
}   
location ~ \.php(.*)$  { 
	# comment try_files $uri =404; to enable pathinfo
	# try_files $uri =404;
	fastcgi_pass                php:9000; 
	fastcgi_index               index.php; 
	fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;   
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
	fastcgi_param PATH_INFO $fastcgi_path_info;  
	fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 
	include /etc/nginx/fastcgi_params;
}   
# error_page  404     /404.html;
# error_page  403     /403.html;}

启动

经过上面几个步骤,我们已经把PHP开发最基本的搞好了,下面我们准备看下成果。
在 app 目录下创建一个 index.php ,内容是:

<?php phpinfo();

进入到项目下面,执行:

docker-compose up

打开浏览器访问Http://localhost:8000/,结果如图所示:

连接数据库

在app目录有一个adminer.php文件,这个文件是一个类似于PHPmyadmin的数据库管理工具,比较轻量级,访问http://localhost:8000/adminer.php,如图所示:

在表单服务器选项中填写mysql,用户名root,密码填写安装MySQL服务时的root密码,然后登陆进去,如图所示:

然后我们就可以愉快的管理数据库了。

总结

至此,我们对PHP基本开发环境已经安装好了,如果需要安装比如Redis或memcache等服务的话,可以自行度娘,自己动手。

以上就是如何在Mac上通过docker配置PHP开发环境的详细内容,更多关于在Mac上通过docker配置PHP开发环境的资料请关注编程网其它相关文章!

--结束END--

本文标题: 如何在Mac上通过docker配置PHP开发环境

本文链接: https://lsjlt.com/news/127123.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在Mac上通过docker配置PHP开发环境
    目录使用docker-compose配置开发环境什么是docker-compose目录结构MySQL测试phpDockerfilephp服务中遇到的坑php.iniNginxapp....
    99+
    2024-04-02
  • 怎么在Mac上通过docker配置PHP开发环境
    这篇文章主要介绍怎么在Mac上通过docker配置PHP开发环境,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用docker-compose配置开发环境一般一个基本的PHP开发环境包括PHP、PHP-FPM、WEB...
    99+
    2023-06-15
  • 在mac上配置vue开发环境
    1. 在mac上安装brew brew 是 Mac 下的一个包管理工具,没有安装brew ( 检测用 brew -v ),则执行下面的命令安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.gith...
    99+
    2023-09-03
    npm 前端 node.js vue
  • Mac中Docker如何配置LNMP开发环境
    小编给大家分享一下Mac中Docker如何配置LNMP开发环境,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Mac下Docker配置LNMP开发环境的方法:1、安装Docker;2、配置安装环境;3、安装Mysql5.7;...
    99+
    2023-06-20
  • 怎么在Mac上配置iOS开发环境
    本篇内容主要讲解“怎么在Mac上配置iOS开发环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Mac上配置iOS开发环境”吧!第一步:安装PlatformAssistant 当你布署iO...
    99+
    2023-07-01
  • 如何在VSCode配置PHP开发环境
    目录一、下载XAMPP二、 下载xdebug插件三、下载并安装VSCode一、下载XAMPP XAMPP是一个易于安装的Apache发行版,其中包含MariaDB、PHP和Perl。...
    99+
    2024-04-02
  • Mac配置Android开发环境
    1、下载jdk和AndroidStudio 下载地址如下: jdk:https://www.oracle.com/java/technologies/javase-downlo...
    99+
    2022-06-06
    环境 android开发 mac Android
  • php开发环境如何配置
    要配置PHP开发环境,您需要执行以下步骤:1. 安装PHP:从PHP官方网站(https://www.php.net/downloa...
    99+
    2023-09-05
    php
  • 在mac上搭建php的SNMP开发环境
    前言 最近需要开发AC的snmp协议,需要开启php的snmp扩展,网上能搜索到的主要还是windows和centos下面的几篇资料。这里主要介绍下mac系统下如何搭建php的snmp开发环境。 第一...
    99+
    2023-09-02
    php macos 开发语言
  • 在VScode上配置Python开发环境
    软件准备: 首先得下载好Python和VScode VScode:https://code.visualstudio.com/ Python:https://www.python.org/ftp/python/3.7.0/python-3...
    99+
    2023-01-31
    环境 VScode Python
  • 在 VSCode 中配置 PHP 开发环境
    在 VSCode 中配置 PHP 开发环境 1 PHP 官网地址:PHP 界面: 2 下载 官网下载地址:Download PHP 3 安装 ① 按照下图下载 php。 ② 解压到想要安装 ph...
    99+
    2023-08-30
    vscode php
  • 如何在Mac上安装PHP环境
    在进行 PHP 开发前,需要搭建 PHP 环境。对于 Mac 用户来说,这个过程相对简单,以下是如何在 Mac 上安装 PHP 环境的详细步骤。安装 HomebrewHomebrew 是 Mac 上最好的包管理器之一,可以用于安装各种开源软...
    99+
    2023-05-14
    php mac
  • Mac通过homebrew安装 jdk1.8 并配置环境
    Mac通过homebrew安装 jdk1.8 更新jdk,这个命令由于依旧是从国外的源更新,所以需要多试几次。 brew tap AdoptOpenJDK/openjdk 安装jdk1.8,二选一 brew install ado...
    99+
    2023-08-16
    macos java jvm
  • PHP中如何使用Docker布置开发环境
    这篇文章给大家分享的是有关PHP中如何使用Docker布置开发环境的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PHP 开发的 Docker 实践环境部署一直是一个很大的问题,无论是开发环境还是生产环境,但是 D...
    99+
    2023-06-22
  • docker如何搭建php开发环境
    要搭建一个基于Docker的PHP开发环境,可以按照以下步骤进行操作:1. 安装Docker:根据你的操作系统,安装适合的Docke...
    99+
    2023-08-23
    docker php
  • 怎么在VSCode配置PHP开发环境
    这篇文章主要介绍怎么在VSCode配置PHP开发环境,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何在VSCode配置PHP开发环境(详细版)?不懂的小伙伴快来学习吧!相信你们看完这篇文章一定会有所收获的一、下载X...
    99+
    2023-06-15
  • Mac M1 Java 开发环境配置详解
    JDK 配置 目前 Zulu JDK 支持 M1芯片,下载Zulu JDK 下载后点击安装,在控制台输入java -version ~ % java -version open...
    99+
    2024-04-02
  • 如何在Windows和Mac OS上搭建HTML5开发环境
    随着HTML5技术的不断发展和普及,越来越多的开发者开始使用HTML5构建自己的网站和应用程序。然而,如何搭建一个适合HTML5开发的环境却是一个挑战。本文将介绍一些常用的HTML5开发环境和工具,并详细介绍如何在Windows和Mac O...
    99+
    2023-05-14
  • 如何在UNIX环境下正确配置Java开发环境?
    在UNIX环境下正确配置Java开发环境是非常重要的,因为这将直接影响到开发人员的工作效率和代码的质量。在本文中,我们将介绍如何在UNIX环境下正确配置Java开发环境,并提供一些演示代码,以便读者更好地理解。 第一步:安装Java开发工具...
    99+
    2023-08-26
    path unix 开发技术
  • 如何配置Kotlin开发环境
    本篇文章为大家展示了如何配置Kotlin开发环境,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Kotlin是一种开源的基于JVM的变成语言,由JetBeans公司开发(大概除了使用VS的.net开发...
    99+
    2023-05-31
    kotlin
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作