Docker PHP-FPM 端口冲突

问题描述 投票:0回答:1

我目前正在学习 docker,我的目标是设置多个 laravel 项目,每个项目作为一个容器。目前我设置了两个项目,但每当我在项目 1 和项目 2 上运行

docker compose
构建和
docker compose up
时;访问项目 2 时,我收到 502 bad gateway 错误,但项目 1 工作正常。

在检查

/usr/local/etc/php-fpm.d/zz-docker.conf
文件时,我注意到它使用的端口与我从项目 1 中申请的端口相同。看起来它们共享相同的实例/图像?寻找有关如何将它们分开的提示,以便它们对于每个容器具有不同的值。因为我能够在网上找到覆盖
php-fpm
默认端口 9000 的唯一解决方案是更改该文件中的 www 端口。

项目1 docker-compose.yml

name: test-1
services:
    test-1-srv:
        container_name: test-1-app
        image: php:8.1-fpm
        build:
            context: .
            target: php
            args:
                - APP_ENV=${APP_ENV}
        environment:
            - APP_ENV=${APP_ENV}
            - APP_DEBUG=${APP_DEBUG}
        working_dir: /var/www
        volumes:
            - ./:/var/www
        ports:
            - "33001:8080"

项目2 docker-compose.yml

name: test-2
services:
    test-2-srv:
        container_name: test-2-app
        image: php:8.1-fpm
        build:
            context: .
            target: php
            args:
                - APP_ENV=${APP_ENV}
        environment:
            - APP_ENV=${APP_ENV}
            - APP_DEBUG=${APP_DEBUG}
        working_dir: /var/www
        volumes:
            - ./:/var/www
        ports:
            - "33002:8080"

如您所见,它们几乎相同。唯一的区别是使用的端口不同。项目 1 使用 33001,项目 2 使用 33002。

两个 Dockerfile 都包含此片段

FROM php:8.1-fpm as php
RUN sed -i 's/9000/3300X/' /usr/local/etc/php-fpm.d/zz-docker.conf

将上面代码片段中的 X 替换为 1 或 2。

希望你们能在我进一步探索如何解决这个问题时引导我走向正确的方向。

php docker nginx nginx-reverse-proxy
1个回答
0
投票

所以我所做的是添加一个包含内容的 zz-docker.conf 文件

[global]
daemonize = no

[www]
listen = 33002

然后我在我的 Dockerfile 上添加了一个 COPY 命令

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

现在似乎可以正常工作了。

© www.soinside.com 2019 - 2024. All rights reserved.