docker中安装php运行环境

作者:AdaTina日期:2025/11/23

1. 拉取镜像

docker pull php:7.4-fpm # 以 PHP 7.4 为例

docker pull nginx:latest

docker pull mysql:8.0

2. 创建网络

docker network create -d bridge my-network

# -d:让容器在后台以守护进程模式运行

3. 运行 MySQL 容器

docker run -d --name mysql8.0 --network my-network -e MYSQL_ROOT_PASSWORD=root mysql:8.0

4. 运行 PHP-FPM 容器

# -v:将宿主机目录或文件挂载到容器中,实现数据持久化

docker run -d --name php7.4 -v /path/to/app:/app --network my-network php:7.4-fpm

5. 运行 Nginx 容器

docker run -d --name nginx -p 80:80 -v /path/to/app:/app --network my-network nginx

6. 配置 Nginx

编辑 Nginx 默认配置文件,将 fastcgi_pass 指向 PHP 容器的 IP(通过 docker inspect php7.4 | grep IPAddress 获取)。

三、验证环境

访问 http://localhost,若显示 PHP 信息页则环境搭建成功。

四、docker小知识

1、端口映射(推荐方式)

通过 -p 参数将容器端口映射到宿主机端口,外部网络通过访问宿主机的 IP 和映射端口来访问容器服务‌2。
示例命令‌:

docker run -d -p 宿主机端口:容器端口 镜像名

  • 作用‌:将容器的 容器端口 映射到宿主机的 宿主机端口
  • 访问方式‌:外部网络通过 宿主机的IP:宿主机端口 访问容器服务‌2。
  • 高级用法‌:
    • 绑定特定 IP:-p 127.0.0.1:宿主机端口:容器端口(仅限本地访问)。
    • 随机映射:使用 -P 参数,Docker 会随机分配宿主机的高端口(49000-49900)。

2、网络模式

通过 --net=host 启动容器,容器直接使用宿主机的网络栈,无需端口映射即可通过宿主机的 IP 访问容器服务‌

Docker创建网络的核心目的是‌实现容器间的高效通信、隔离性管理以及与外部网络的灵活交互‌,尤其在微服务架构和分布式部署中至关重要。

容器间通信需求

现代应用(如微服务)通常由多个独立服务组成(如Web前端、数据库等),这些服务需在容器中运行并相互调用。Bridge网络通过虚拟交换机为容器分配独立IP,实现同一主机内容器的直接通信,避免端口冲突。 ‌

外部网络访问

Web服务(如Nginx)需暴露端口供外部访问。Host网络模式可直接使用宿主机IP和端口,但牺牲隔离性;Overlay网络则支持跨主机通信,适合Swarm或Kubernetes集群。 ‌

安全与隔离

None网络模式提供无网络环境,适用于离线任务;自定义网络允许通过ACL等机制控制访问权限,提升安全性。

性能优化

Host模式无NAT开销,适合高性能场景;Container模式共享网络栈,减少资源消耗。


docker中安装php运行环境》 是转载文章,点击查看原文


相关推荐


CANN 异构计算架构:释放昇腾 AI 算力潜能,赋能自动驾驶实时感知
LucianaiB2025/11/22

CANN 异构计算架构:释放昇腾 AI 算力潜能,赋能自动驾驶实时感知 2025年10月,某自动驾驶算法团队在昇腾 Atlas 900 服务器上完成了一项关键测试:基于 CANN 架构优化的 FlashAttention 算子,将激光雷达点云实时处理延迟从 80ms 降至 15ms,这意味着原本需要 4 张 GPU 卡才能运行的感知算法,现在只需单张昇腾 910B 即可实现!这个突破背后,正是异构计算架构 CANN 释放的硬件潜能。 CANN异构计算架构:从硬件到应用的多层次协同设计 CANN(


WPF命令
她说彩礼65万2025/11/20

命令是一种设计模式(命令模式,Command Pattern),用于将“请求”封装为一个对象,从而: 解耦调用者(如按钮)与执行者(如 ViewModel 中的方法) 支持统一的启用/禁用控制(CanExecute) 实现撤销(Undo)、日志、队列等高级功能 在 WPF 中,命令通过 ICommand 接口实现。 public interface ICommand { event EventHandler CanExecuteChanged; bool CanExecute(o


私有化部署的gitlab的push failed问题,使用http远程连接(使用token或用户、密码)
知兀2025/11/19

报错 我使用了ssh push代码,结果push失败 ping ip也可能ping通 使用http远程连接仓库 一问才知道,服务器没开ssh 用http的连接 git remote add origin http://<局域网ip>/xxx.git Token 连接成功后,我想要push代码,然后出现了 右侧的 “Generate...” 按钮用于引导你在 GitLab 中生成符合 IDEA 集成要求的个人访问令牌 生成后复制 通过用户、密码登录


Python 的内置函数 tuple
IMPYLH2025/11/17

Python 内建函数列表 > Python 的内置函数 tuple Python 的内置函数 tuple() 用于创建一个不可变的序列(元组)。以下是关于 tuple() 函数的详细说明: 功能描述 tuple() 函数可以将可迭代对象(如列表、字符串、集合等)转换为元组。如果调用时不传入参数,则返回一个空元组。 语法 tuple(iterable) iterable(可选):任何可迭代对象(如列表、字符串、字典等)。如果未提供,则返回空元组 ()。 返回值 返回一个包含输入


Python 的内置函数 range
IMPYLH2025/11/16

Python 内建函数列表 > Python 的内置函数 range Python的内置函数range详解 range()是Python中一个非常实用的内置函数,主要用于生成一个不可变的整数序列。它在循环和迭代操作中应用广泛。 基本语法 range()函数有三种调用方式: range(stop):生成从0开始到stop-1的整数序列range(start, stop):生成从start开始到stop-1的整数序列range(start, stop, step):生成从start开始到s


在 Linux 环境中配置 Eclipse 以开发 Hadoop 应用
EmoGP2025/11/15

手动导入 JAR 包(无 Maven 时) 右键 Eclipse 项目 → Properties → Java Build Path → Libraries → Add External JARs。 依次选择以下目录中的所有 JAR 包


VisionWeaver:从“现象识别”到“病因诊断”,开启AI视觉幻觉研究新篇章
哔哩哔哩技术2025/11/14

前言 长久以来,我们只知道大型视觉语言模型(LVLM)会犯错,但始终缺乏一把“手术刀”,无法剖析其视觉感知的根源性缺陷。我们只知其然,不知其所以然。我们希望当 AI 模型观察图像时,不再凭空想象,不再“指鹿为马”。 现在,这一瓶颈被打破了。bilibili 用户技术中心提出 VisionWeaver 及其核心诊断工具 VHBench-10,带来了创新性的视角。VisionWeaver 不再依赖单一编码器,而是开创性地提出“上下文感知路由网络”,动态协同多个“视觉专家” 。而这一切得以实现的基础,


副业搞个 100 万,这 5 个 GitHub 项目不能错过。
逛逛GitHub2025/11/13

01、一人企业方法论 开源项目名字叫做《一人企业方法论》,目前已经更新到第二版。专门为想要独立创业或开展副业的个人提供实用指导。 无论是做自媒体、电商还是数字商品,即使没有技术背景,也能从中获得启发。 我读下来,这个开源项目的核心思想和我的想法非常契合。它倡导一种以个人为核心、精益化、可持续的商业模式。  它不追求规模化增长和资本驱动,而是专注于利用现代技术工具和系统化方法论,让个人能够独立构建并运营一个健康、盈利的微型企业。 如果你厌倦了大厂的撕逼,无效了的内卷,想找寻一份靠谱的副业。建议


深度解析:解决 backdrop-filter 与 border-radius 的圆角漏光问题
_志哥_2025/11/11

引言 在现代Web开发中,backdrop-filter 属性为创建毛玻璃等高级视觉效果提供了强大的支持,极大地提升了用户界面的层次感和现代感。然而,当我们将它与 border-radius 结合使用时,一个常见的渲染问题便会浮现:圆角边缘出现不应有的“漏光”现象。本文将深入探讨该问题的根源,分析现有解决方案的局限性,并最终提供一个基于 CSS Mask 的、行之有效的终极解决方案。 问题根源:渲染层级的冲突 要理解“漏光”现象,我们必须深入浏览器的渲染机制。这个问题的核心在于 backdrop


Spring 容器的基本实现
ToPossessLight09022025/11/9

1、基本用法 public class MySpringBean { private String beanName = "beanName"; public String getBeanName() { return beanName; } public void setBeanName(String beanName) { this.beanName = beanName; } } <beans xmlns="ht

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读