温馨提示×

如何容器化debian php

小樊
38
2026-09-17 07:31:43
栏目: 编程语言

下面给你一个从零开始的「Debian + PHP 容器化」实践指南,以 Docker 为例,适合 Web 项目(如 PHP-FPM / CLI / Nginx 组合)。


一、最基础:容器化 Debian + PHP CLI

1️⃣ 创建项目目录

mkdir debian-php
cd debian-php

2️⃣ 写 Dockerfile(基于 Debian)

# 使用 Debian 官方镜像
FROM debian:12

# 避免交互式安装
ENV DEBIAN_FRONTEND=noninteractive

# 安装 PHP CLI
RUN apt-get update && \
    apt-get install -y php-cli && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 工作目录
WORKDIR /app

# 默认命令
CMD ["php", "-v"]

3️⃣ 构建镜像

docker build -t debian-php .

4️⃣ 运行容器

docker run --rm debian-php

✅ 输出 PHP 版本即成功


二、运行 PHP 脚本(挂载代码)

docker run --rm -v $(pwd):/app debian-php php /app/index.php

示例 index.php

<?php
echo "Hello from Debian PHP container\n";

三、Web 场景:Debian + PHP-FPM + Nginx

1️⃣ Dockerfile(PHP-FPM)

FROM debian:12

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y php-fpm && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app

EXPOSE 9000

CMD ["php-fpm7.4", "-F"]

Debian 12 默认是 php8.2,可用 php-fpm8.2


2️⃣ Nginx 配置(示例)

server {
    listen 80;
    root /app;
    index index.php;

    location ~ \.php$ {
        fastcgi_pass php:9000;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

3️⃣ docker-compose.yml

version: "3"
services:
  php:
    build: ./php
    volumes:
      - ./app:/app

  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./app:/app
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

访问:

http://localhost:8080

四、常见优化建议

✅ 使用更小镜像

FROM debian:12-slim

✅ 安装常用扩展

apt-get install -y \
  php-mysql \
  php-curl \
  php-mbstring \
  php-xml

✅ 指定 PHP 版本

apt-get install -y php8.2-fpm

五、调试技巧

# 进入容器
docker exec -it 容器名 bash

# 查看 PHP 模块
php -m

六、适合你的下一步

你可以告诉我:

  • ✅ 是 CLI 工具 还是 Web 服务
  • ✅ 是否需要 Composer
  • ✅ 是否用 Apache 还是 Nginx
  • ✅ 是否要 多阶段构建 / 生产镜像

我可以直接帮你写一套 完整 Docker + PHP 项目模板

0