# 设置基础镜像
FROM php:8.2-fpm
# 安装必要的软件包和依赖项
RUN apt-get update && apt-get install -y \
nginx \
libzip-dev \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
&& rm -rf /var/lib/apt/lists/*
# 安装 PHP 扩展
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install zip pdo_mysql
# 安装 pcntl 扩展
RUN docker-php-ext-install pcntl
# 安装 Redis 扩展
RUN pecl install redis-5.3.7 \
&& docker-php-ext-enable redis
# 安装 Xdebug 扩展
RUN pecl install xdebug-3.2.1 \
&& docker-php-ext-enable xdebug
# 复制 Nginx 配置文件到容器
COPY ./dockerConfig/nginx/default.conf /etc/nginx/conf.d/default.conf
# 复制启动脚本到容器
COPY start.sh /start.sh
# 赋予启动脚本可执行权限
RUN chmod +x /start.sh
# 复制项目代码到容器
COPY . /var/www/html
# 设置文件和目录的权限
RUN chown -R www-data:www-data /var/www/html
# 启动 Nginx 和 PHP-FPM
CMD ["/start.sh"]
目录接口如下
关于nginx 的配置可以删去,
sh文件
#!/bin/bash
set -e
# 启动 Nginx
service nginx start
# 执行 PHP 命令
php start.php start
nginx配置文件
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
server {
server_name test.com
listen 80;
access_log off;
root /var/www/html/public;
location ^~ / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://webman;
}
}
}
制作镜像
docker build -t new_app .
运行
docker run -p 8080:8787 new_app
测试
如有不清楚,请留言,看到必回