制作一个包含PHP、MySQL、Redis、swoole、swoole_loader的docker镜像

4次阅读
没有评论

共计 1551 个字符,预计需要花费 4 分钟才能阅读完成。

前言

近期需要部署一个PHP项目,但是项目中带有 swoole,不想在服务器安装swoole扩展,想做一个docker镜像,对服务器干净一些,不对当前环境造成影响,所以就有了这个小功能

文件

一共有4个文件和一个目录

目录

1 . ./data/www 说明 PHP文件存放目录

文件

  1. ./data/nginx.conf NGINX 配置文件
  2. ./swoole_loader.so swoole_loader 扩展文件
  3. ./Dockerfile 镜像构建文件
  4. ./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    

执行命令

  1. docker-compose build

  2. docker-compose up -d

注意

映射端口是 80,根据自己的情况修改

正文完
 0
Eric chan
版权声明:本站原创文章,由 Eric chan 于2025-04-22发表,共计1551字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。