【问题标题】:How to install SWOOLE in a Dockerfile for Laravel8/PHP8 project?如何在 Laravel8/PHP8 项目的 Dockerfile 中安装 SWOOLE?
【发布时间】:2021-07-28 06:22:53
【问题描述】:

我将构建一个 Laravel 8 应用程序。 PHP 语言级别为 PHP8。如何将 Swoole 集成到我的 Dockerfile 中?

其实我是这样尝试的:

RUN pecl channel-update https://pecl.php.net/channel.xml \
    && pecl install swoole

但是如果我构建 Dockerfile,它总是会遇到这个错误:

------
 > [11/19] RUN pecl channel-update https://pecl.php.net/channel.xml  && pecl install swoole:
#14 0.283 /bin/sh: 1: pecl: not found
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c pecl channel-update https://pecl.php.net/channel.xml  && pecl install swoole]: exit code: 127

有人有想法吗? 如果您需要有关它的更多信息,请告诉我。

问候, 曼尼

【问题讨论】:

  • 您是否尝试按照 swooles 网站上的说明进行操作? swoole.co.uk/docs/get-started/try-docker
  • 你使用什么基础镜像?
  • @TomRegner:是的,我愿意。
  • @Gasol:Ubuntu:20.04 现在可以使用了。我不确定如何,但也许它与在它前面安装 Node.JS 有关?!我会在答案中发布我的实际工作线。谢谢:)
  • @Manny:你怎么能按照我链接的说明(在 docker 文件中构建 swoole by hand)同时使用已弃用的 pecl 尝试安装它?只是好奇...

标签: php laravel dockerfile pecl swoole


【解决方案1】:

...所以我不知道究竟是为什么,但它现在有效。也许我在 Swoole 上的 Node.JS 安装有问题?!

这是适合我的工作解决方案:

ENV NODE_VERSION=16.5
ENV NVM_DIR=/root/.nvm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
RUN . "$NVM_DIR/nvm.sh" \
    && nvm install ${NODE_VERSION}
RUN . "$NVM_DIR/nvm.sh" \
    && nvm use v${NODE_VERSION}
RUN . "$NVM_DIR/nvm.sh" \
    && nvm alias default v${NODE_VERSION}
ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}"
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        npm
RUN npm install -g yarn

RUN pecl channel-update https://pecl.php.net/channel.xml \
    && pecl install swoole

【讨论】:

    【解决方案2】:

    是一个使用官方PHP 8.0(Debian)镜像,通过PECL安装Swoole的示例Dockerfile:

    FROM php:8.0.12-cli-bullseye
    
    # ...
    
    RUN pecl install swoole
    RUN docker-php-ext-enable swoole
    

    这也是我完整的 Dockerfile:

    FROM php:8.0.12-cli-bullseye
    
    # Install system dependencies
    RUN apt-get update && apt-get install -y \
        curl \
        libicu-dev \
        libpng-dev \
        libonig-dev \
        libxml2-dev \
        git \
        cron \
        zip \
        unzip
    
    # Clear cache
    RUN apt-get clean && rm -rf /var/lib/apt/lists/*
    
    # Install PHP extensions
    RUN pecl install redis swoole
    RUN docker-php-ext-install pdo_mysql exif pcntl bcmath gd intl soap
    RUN docker-php-ext-enable redis swoole
    RUN docker-php-ext-configure intl
    
    RUN sed -i -e "s/upload_max_filesize = .*/upload_max_filesize = 1G/g" \
            -e "s/post_max_size = .*/post_max_size = 1G/g" \
            -e "s/memory_limit = .*/memory_limit = 512M/g" \
            /usr/local/etc/php/php.ini-production \
            && cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
    
    # Set working directory
    WORKDIR /app
    
    # Get latest Composer and install
    COPY --from=composer:2.1.9 /usr/bin/composer /usr/bin/composer
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-17
      • 2022-08-22
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多