首页 > 解决方案 > 如何更改 php-fpm 默认端口?

问题描述

我正在使用php-fpmwhich 在端口上默认运行9000。问题是我有其他基于 的 docker 容器php-fpm,所以我需要将默认端口更改为另一个,以免混淆nginx

这是我的Dockerfile

FROM php:8.0.2-fpm-alpine
RUN sed -i 's/9000/9001/' /usr/local/etc/php-fpm.d/zz-docker.conf

WORKDIR /var/www/html

CMD ["php-fpm"]

EXPOSE 9001

我尝试使用该sed命令将端口替换90009001.

在我的docker-compose文件中,我有以下配置:

version: '3.9'

services:

  php-fpm:
    container_name: app
    restart: always
    build:
      context: .
      dockerfile: ./docker/php-fpm/Dockerfile
    ports:
      - "9001:9000"
    volumes:
      - ./src:/var/www/html
      - ./docker/php-fpm/config/www.conf:/usr/local/etc/php-fpm.d/www.conf
      - ./src/public:/app/public
      - ./src/writable:/app/writable

  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    restart: always
    volumes:
      - ./src:/var/www/html
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/sites/:/etc/nginx/sites-available
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d
    depends_on:
      - php-fpm
    environment:
      VIRTUAL_HOST: ${HOST}
      LETSENCRYPT_HOST: ${HOST}
      LETSENCRYPT_EMAIL: ${EMAIL}

如您所见,我9001也在docker-compose文件中公开了端口。

文件夹中default.conf可用的conf.d文件包含以下内容:

upstream php-upstream {
    server php-fpm:9001;
}

问题是由于某种原因,当我加载我的网站时,我收到错误 500。所以这意味着流没有发送任何信号。如果我更改为端口9000一切正常,但流是错误的,因为它是另一个应用程序的内容。

如何正确更改默认端口?

标签: dockernginxdocker-composedockerfilefpm

解决方案


我认为问题不在于 sed 命令本身,它与您提到的错误文件有关。

/usr/local/etc/php-fpm.d/zz-docker.conf

这是您尝试更改其中端口的文件,但在您的 docker-compose 文件中,您正在映射其他内容

./docker/php-fpm/config/www.conf:/usr/local/etc/php-fpm.d/www.conf

推荐阅读