docker本地PHP开发环境搭建

这篇具有很好参考价值的文章主要介绍了docker本地PHP开发环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、搭建本地PHP开发环境

概述

本文简单介绍通过启动一个nginx和fpm容器来搭建一个php web运行环境,以文档命令为例,H:/home/code/docker/web 目录下可以放多个子项目,只需针对不同的项目配置不同的nginx站点文件,在站点中指定下级项目目录即可,以后台项目admin为例, 则具体的子路径为H:/home/code/docker/web/admin,容器内路径为/var/www/html/admin

启用多项目需要修改的站点配置:

  1. root目录指定到下级项目路径

  2. fastcgi_param  SCRIPT_FILENAME 指定到下级项目路径

启用其他版本的php

如果需要启动其他PHP的版本,只需要再使用别的端口重新启动一个php-fpm容器即可,只需要在 -d 参数后修改依赖的镜像版本,比如:php:8.1-fpm-alpine、php:7.4-fpm-alpine、php:5.5-fpm-alpine

注:官方PHP镜像缺少常用扩展,比如redis,gd等,需自行基于官方镜像安装扩展二次打包, 或启动后手动安装扩展,也可使用其它途径提供的带常用扩展的镜像。

其它

使用docker compose 一次性编排多个容器,可一键启动项目所需全部容器, 见下文。

具体步骤

前置条件 : 已安装docker

方法一:手动搭建

1. 启动一个docker网络

docker network create --driver=bridge  nginx_network

2. 启动php8.1版本的 php-fpm容器

docker run --name  php-fpm-81 \
-v H:/home/code/docker/web:/var/www/html \
--network nginx_network \
--ip 172.18.0.3 \
--privileged=true \
-d php:8.1-fpm-alpine

3. 启动nginx容器

docker run --name nginx-common \
-p 8008:80 \
-v H:/home/code/docker/web:/var/www/html \
-v H:/home/docker/nginx_conf.d:/etc/nginx/conf.d \
--network nginx_network \
--ip 172.18.0.4 \
--privileged=true \
-d nginx

上述命令参数解析:

--name   为启动的容器命名

-p 映射端口,把本地宿主机的8008端口 映射到容器的80端口,访问本地8008端口即访问容器80端口

-v  映射本地文件目录 到 容器内部目录,比如项目代码目录

--network 关联容器网络

--ip 指定容器ip

--privileged 启用桥接

-d  后台启动一个容器,使用名为为php ,tag为 8.1-fpm-alpine 的镜像,本地不存在会从官方仓库拉取

4. 创建nginx站点配置

 创建项目 admin.conf 文件, 把文件放到 H:/home/docker/nginx_conf.d 目录中,也就是启动nginx容器时 -v 命令映射的本地nginx站点配置文件夹

server {
    listen       80;
    server_name  192.168.0.195;

    location / {
        if (!-e $request_filename){
            rewrite ^/(.*) /index.php last;
        }

        root   /var/www/html/admin;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html/admin;
    }

    location ~ \.php$ {
				root   /var/www/html;
        fastcgi_pass   172.18.0.3:9000; #php容器的ip地址
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/admin/$fastcgi_script_name; 
				#fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;
    }  
}

访问  8008端口 打开admin项目

docker搭建php开发环境,php,docker,nginx,linux安装PHP运行环境

方法2:docker-compose一键启动

也可使用docker-compose服务编排,一键启动上述php和nginx等服务容器

创建 docker-compose.yml 文件,内容如下,修改项目路径和配置文件路径为自己的电脑文件夹路径:

#yaml 配置实例
version: '3'
services:
  php:
    container_name: php-fpm-81
    image: php:8.1-fpm-alpine
    restart: always
    networks:
    	- nginx_network
    ports:
      - "9000:9000"
    volumes:
      - "H:/home/code/docker/web:/var/www/html" #代码目录
      #- "H:/home/code/docker/php81/etc:/usr/local/etc" #php配置文件夹,可选
      #- "H:/home/code/docker/php81/log:/var/log/php" #log,可选
    networks:
     nginx_network:
      ipv4_address: 172.18.0.3
  nginx:
    container_name: nginx-common
    image: nginx:latest
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "8008:80"
    depends_on:
      - "php"
    volumes:
      - "H:/home/code/docker/web:/var/www/html" #代码目录
      - "H:/home/docker/nginx/nginx_conf.d:/etc/nginx/conf.d" #配置文件目录
      #- "H:/home/docker/nginx/log:/var/log/nginx" #log,可选
    networks:
    	nginx_network:
        ipv4_address: 172.18.0.4
      
networks:
  nginx_network:
    driver: bridge
    ipam:
     config:
     - subnet: 172.18.0.0/16
    

在上述文件存在的目录 执行  docker-compose up -d  命令启动容器, 访问8008端口查看项目运行情况

二、redis 和 mysql 的启动

redis启动

创建redis配置文件 myredis.conf , 对应本地文件夹为H:/home/code/docker/redis

port 6379
timeout 65
maxclients 10000
databases 16
maxmemory 1048576000
appendonly yes
#protected-mode no #关闭保护模式
#bind 0.0.0.0 
requirepass 123456 #设置密码

启动redis

docker run \
--name php-redis \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=2 \
-p 6375:6379 \
-v H:/home/code/docker/redis/myredis.conf:/etc/redis/redis.conf \
-v H:/home/code/docker/redis/data:/data \
--network nginx_network \
--ip 172.18.0.5 \
--privileged=true \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes  --requirepass 123456 

mysql启动

创建配置文件my.cnf,放入目录为 H:/home/code/docker/mysql/conf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

启动mysql

docker run 
-p 3307:3306 \
--name mysql \
--restart=always \
-v H:/home/code/docker/mysql/data:/var/lib/mysql \ #数据目录
-v H:/home/code/docker/mysql/conf:/etc/mysql/conf.d \ #配置目录
-v H:/home/code/docker/mysql/log:/var/log/mysql \ #log目录
--network nginx_network \
--ip 172.18.0.6 \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

docker-compose启动 php+nginx+redis+mysql

附带php、nginx、redis、mysql 版本的docker-compose.yml 文件如下

#yaml 配置实例
version: '3'
services:
  php:
    container_name: php-fpm-81
    image: php:8.1-fpm-alpine
    restart: always
    networks:
    	- nginx_network
    ports:
      - "9000:9000"
    volumes:
      - "H:/home/code/docker/web:/var/www/html" #代码目录
      #- "H:/home/code/docker/php81/etc:/usr/local/etc" #php配置文件夹,可选
      #- "H:/home/code/docker/php81/log:/var/log/php" #log,可选
    networks:
     nginx_network:
      ipv4_address: 172.18.0.3
  nginx:
    container_name: nginx-common
    image: nginx:latest
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "8008:80"
    depends_on:
      - "php"
    volumes:
      - "H:/home/code/docker/web:/var/www/html" #代码目录
      - "H:/home/docker/nginx/nginx_conf.d:/etc/nginx/conf.d" #配置文件目录
      #- "H:/home/docker/nginx/log:/var/log/nginx" #log,可选
    networks:
    	nginx_network:
        ipv4_address: 172.18.0.4
  redis:
    image: redis:latest
    container_name: php-redis
    restart: always
    privileged: true #root权限
    ports:
      - "6375:6379"
    volumes:
      - "H:/home/code/docker/redis/myredis.conf:/etc/redis/redis.conf"#配置目录
      - "H:/home/code/docker/redis/data/:/data" #数据目录
    networks:
      nginx_network:
      ipv4_address: 172.18.0.5
    command: redis-server /etc/redis/redis.conf #已对应的配置文件启动
  mysql:
      image: mysql:5.7
      container_name: php-mysql
      privileged: true
      ports:
        - "3307:3306"
      volumes:
        - "H:/home/code/docker/mysql/data:/var/lib/mysql" #数据目录
        - "H:/home/code/docker/mysql/conf:/etc/mysql/conf.d" #配置目录
        - "H:/home/code/docker/mysql/log:/var/log" #log目录
      environment:
        - MYSQL_ROOT_PASSWORD=123456
      networks:
        nginx_network:
         ipv4_address: 172.18.0.6
networks:
  nginx_network:
    driver: bridge
    ipam:
     config:
     - subnet: 172.18.0.0/16
    

三、docker常用命令参考

查看镜像

docker images

查看容器

docker ps 

docker ps -a

构建自定义镜像

docker build -t my_images:1.0 .

查看容器信息

docker inspect 容器id

登录docker容器内部

docker exec -it 容器id bash

宿主机和容器复制文件

docker cp /home/docker/nginx/xxx  容器id:/etc/nginx/xxx

docker cp 容器id:/etc/nginx/xxx   /home/docker/nginx/xxx  

docker网络

查看网络列表:docker network list

查看网络详情:docker network inspect  网络名称文章来源地址https://www.toymoban.com/news/detail-732451.html

到了这里,关于docker本地PHP开发环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker搭建nginx+php环境

    一、docker拉取nginx和php镜像 命令如下: 1、创建本地挂载路径: 2、创建php容器 3、创建nginx本地挂在路径: 4、nginx配置文件如下: 5、创建nginx容器: PS: 6、创建文件测试: 效果如下: 参考文章:nginx调用php原理

    2024年02月13日
    浏览(44)
  • Docker的配置和部署,并搭建php和nginx环境

    服务器环境:CentOS 7.6 说下体验: 通过安装进度还是有些报错出现的,但是一向“兼容不错的宝塔”还是对他抱有一线希望。 最后还是安装成功了。  装好了,如何使用? Docker 是基于命令行使用的,那现在通过一些实际问题去使用一些命令! 1.首先查看是否安装成功。通过

    2024年02月09日
    浏览(48)
  • docker搭建php环境安装

    目录 一、什么是php?  二、docker拉取nginx和php镜像 三、创建容器   四、 测试 一、什么是php? PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。是一种广泛

    2024年02月04日
    浏览(57)
  • Docker Ubuntu php nginx mysql redis 开发环境部署教程

    点击: ubuntu 22.04 配置多版本 php nginx mysql redis 超简单教程

    2024年02月08日
    浏览(56)
  • Docker搭建LNMP环境实战(08):安装php-fpm

    在文件夹:/mnt/hgfs/dockers/test_site/www目录下创建文件:test.php,内容为: 在文件夹:/mnt/hgfs/dockers/test_site/compose下创建文件:test_site_php.yml,内容如下: 注意:此文件中网络的名称和nginx配置文件中网络的名称是相同的,都是:test_site_network 注意:最后一段为新加的修改 图1 f

    2024年04月13日
    浏览(44)
  • 打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战

    🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘 本次实验环境见下表

    2024年02月07日
    浏览(52)
  • 如何在Ubuntu 22.04上安装PHP 8.1并设置本地开发环境

    PHP是一种流行的服务器脚本语言,用于创建动态和交互式web页面。开始使用你选择的语言是学习编程的第一步。 本教程将指导您在Ubuntu上安装PHP 8.1,并通过命令行设置本地编程环境。您还将安装依赖管理器Composer,并通过运行脚本来测试您的安装。 要完成本教程,您需要安

    2024年02月11日
    浏览(66)
  • 在 CentOS 7.4 上使用 Docker极速部署 LNMP (Linux, Nginx, MySQL, PHP) 环境和 WordPress

    前置CentOS7条件: 关闭防护墙: setenforce = 0 systemctl stop firewalld 1. 安装 Docker* 如果你的系统中还没有安装 Docker,可以使用以下命令进行安装:   sudo yum install docker 启动 Docker 服务并设置开机自启: sudo systemctl start docker sudo systemctl enable docker 2. 安装 Docker Compose Docker Compose 可以让

    2024年01月17日
    浏览(48)
  • Windows本地搭建PHP环境

    本文是根据Windows平台本地搭建PHP环境,超详细!(Apache+PHP+Mysql)这篇文章而写,参考这篇文章安装时遇到了一些问题。解决掉这些问题就想着记录一下吧。 Apache下载地址 下载好之后找个目录解压 php下载地址 下载好之后找个目录解压 详细安装教程 1、打开Apache解压目录下的

    2024年02月16日
    浏览(53)
  • Docker部署php运行环境(php-fpm+nginx)

    前言 如果使用docker去部署一套php的运行环境,我们需要构建出nginx、php-fpm两个容器,nginx通过fast_cgi协议去转发php-fpm中的端口,从而实现web server的搭建,接下来以php的laravel框架为演示例子。 部署php-fpm 第一步 编写php-fpm镜像的Dockerfile: ./Dockerfile 第二步 配置Crontab定时任务:

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包