共计 1551 个字符,预计需要花费 4 分钟才能阅读完成。
前言
近期需要部署一个PHP项目,但是项目中带有 swoole,不想在服务器安装swoole扩展,想做一个docker镜像,对服务器干净一些,不对当前环境造成影响,所以就有了这个小功能
文件
一共有4个文件和一个目录
目录
1 . ./data/www
说明 PHP文件存放目录
文件
./data/nginx.conf
NGINX 配置文件./swoole_loader.so
swoole_loader 扩展文件./Dockerfile
镜像构建文件./docker-compose.yml
docker编排文件
./data/nginx.conf 文件内容
server {
listen 80;
server_name _;
root /var/www/html;
index index.php index.html index.htm;
# URL重写配置
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
./Dockerfile 文件内容
FROM php:7.4-fpm
# 安装必要的系统依赖
RUN apt-get update && apt-get install -y \
libzip-dev \
zip \
unzip \
libssl-dev \
&& docker-php-ext-install zip
# 安装 Redis 扩展
RUN pecl install redis-5.3.7 && docker-php-ext-enable redis
# 安装 MySQL 扩展
RUN docker-php-ext-install pdo_mysql
# 安装适配 PHP 7.4 的 Swoole 扩展
RUN pecl install swoole-4.8.12 && docker-php-ext-enable swoole
# 复制本地的 swoole_loader 扩展文件到容器内
COPY swoole_loader.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/
# 在 php.ini 中启用 swoole_loader 扩展
RUN echo "extension=swoole_loader.so" >> /usr/local/etc/php/php.ini
# 设置目录权限
RUN chown -R www-data:www-data /var/www/html
RUN chmod -R 755 /var/www/html
# 设置工作目录
WORKDIR /var/www/html
./docker-compose.yml 文件内容
version: '3'
services:
php:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./data/www:/var/www/html
expose:
- 9000
nginx:
image: nginx:latest
volumes:
- ./data/www:/var/www/html
- ./data/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
depends_on:
- php
执行命令
-
docker-compose build
-
docker-compose up -d
注意
映射端口是 80,根据自己的情况修改
正文完