# 使用官方PHP镜像作为基础
FROM php:8.2-apache
# 将本地文件复制到容器中的/var/www/html目录
COPY . /var/www/html/
# 暴露80端口
EXPOSE 80
构建并运行:
docker build -t my-php-app .
docker run -d -p 8080:80 --name my-running-app my-php-app
# PHP-FPM 容器
FROM php:8.2-fpm
COPY . /var/www/html
# Nginx 容器
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
使用 docker-compose.yml
组合:
version: '3'
services:
php:
build:
context: .
dockerfile: Dockerfile.php
volumes:
- ./:/var/www/html
nginx:
build:
context: .
dockerfile: Dockerfile.nginx
ports:
- "8080:80"
depends_on:
- php
FROM php:8.2-apache
# 安装常用扩展
RUN docker-php-ext-install pdo pdo_mysql mysqli
# 安装GD库
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 安装依赖
RUN composer install --no-dev --optimize-autoloader
ENV APP_ENV=production
ENV APP_DEBUG=false
.dockerignore
排除不必要的文件# 第一阶段:构建阶段
FROM composer:latest as builder
WORKDIR /app
COPY . .
RUN composer install --no-dev --optimize-autoloader
# 第二阶段:生产阶段
FROM php:8.2-fpm-alpine
WORKDIR /var/www/html
# 从构建阶段复制文件
COPY --from=builder /app .
# 安装必要的PHP扩展
RUN docker-php-ext-install pdo pdo_mysql
# 配置权限
RUN chown -R www-data:www-data /var/www/html
EXPOSE 9000
CMD ["php-fpm"]
文件权限问题:
docker exec -it container_name chown -R www-data:www-data /var/www/html
调试模式:
APP_DEBUG=true
性能优化:
日志查看:
docker logs container_name
希望这个指南能帮助你顺利部署PHP应用!如果有任何具体问题,可以进一步讨论。