首先安装Docker和Docker Compose并验证,接着创建Dockerfile配置PHP环境,编写docker-compose.yml编排Nginx、PHP-FPM、MySQL等服务,设置Nginx反向代理并挂载代码目录,最后通过命令构建启动容器,完成PHP应用部署。

将PHP框架应用通过Docker容器化部署,可以提升环境一致性、简化部署流程并便于扩展。以下是通用的PHP框架(如Laravel、Symfony、ThinkPHP等)Docker化部署的操作步骤和关键配置。
确保服务器已安装Docker和Docker Compose:
在项目根目录创建Dockerfile,以Laravel为例:
FROM php:8.2-fpm
<h1>安装依赖扩展</h1><p>RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip</p><h1>启用PHP扩展</h1><p>RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p><h1>安装Composer</h1><p>COPY --from=composer:latest /usr/bin/composer /usr/bin/composer</p><h1>设置工作目录</h1><p>WORKDIR /var/www</p><h1>复制代码</h1><p>COPY . .</p><h1>安装依赖</h1><p>RUN composer install --optimize-autoloader --no-dev --no-scripts</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/1946">
<img src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d3380e8d2729.png" alt="Jenni AI">
</a>
<div class="aritcle_card_info">
<a href="/ai/1946">Jenni AI</a>
<p>使用最先进的 AI 写作助手为您的写作增光添彩。</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="Jenni AI">
<span>48</span>
</div>
</div>
<a href="/ai/1946" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="Jenni AI">
</a>
</div>
<h1>权限设置</h1><p>RUN chown -R www-data:www-data /var/www</p><p>EXPOSE 9000</p><p>CMD ["php-fpm"]
创建docker-compose.yml,整合Nginx、PHP-FPM、MySQL、Redis等服务:
version: '3.8' <p>services: app: build: context: . dockerfile: Dockerfile container_name: php-app volumes:</p><ul><li>.:/var/www environment:</li><li>PHP_IDE_CONFIG=serverName=localhost networks:</li><li>app-network</li></ul><p>nginx: image: nginx:alpine container_name: nginx-server ports:</p><ul><li>"80:80" volumes:</li><li>.:/var/www</li><li>./nginx/conf.d:/etc/nginx/conf.d depends_on:</li><li>app networks:</li><li>app-network</li></ul><p>db: image: mysql:8.0 container_name: mysql-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: app_db MYSQL_USER: app_user MYSQL_PASSWORD: app_pass volumes:</p><ul><li>dbdata:/var/lib/mysql</li><li>./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql ports:</li><li>"3306:3306" networks:</li><li>app-network</li></ul><p>redis: image: redis:alpine container_name: redis-cache ports:</p><ul><li>"6379:6379" networks:</li><li>app-network</li></ul><p>networks: app-network: driver: bridge</p><p>volumes: dbdata:
注意:需提前创建./nginx/conf.d/default.conf配置Nginx转发PHP请求到FPM。
创建nginx/conf.d/default.conf:
server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/public;
<pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}}
执行以下命令完成部署:
基本上就这些,不复杂但容易忽略细节。
以上就是PHP框架Docker部署怎么操作_PHP框架Docker容器化部署步骤及配置的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号