首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker + php-fpm:+ ngnix 502 Bad Gateway nginx/1.23.2

docker + php-fpm:+ ngnix 502 Bad Gateway nginx/1.23.2
EN

Stack Overflow用户
提问于 2022-11-30 01:12:00
回答 1查看 23关注 0票数 0

嗨,我试着和我的对接者共进多个项目--我从debian从头开始创建了每个映像:11我的反应和表达完美地运行,但我不知道为什么ngnix和symfony不能连接到对方,如果有人知道问题是什么,我会得到502坏网关nginx/1.23.2,当我在终端中构建我的对接器时,我没有任何错误信息。

app/symfony/Dockerfile

  • Dockerfile

代码语言:javascript
复制
FROM debian:11

RUN apt update && \
    apt upgrade -y && \
    apt install dirmngr ca-certificates software-properties-common gnupg gnupg2 apt-transport-https curl librabbitmq-dev -y && \
    curl -sSL https://packages.sury.org/php/README.txt | bash -x && \
    apt update && \
    apt upgrade -y && \
    apt install php8.1 \
    php8.1-fpm \
    php8.1-mysql \
    php8.1-pdo \
    php8.1-gd \
    php8.1-cli \
    php8.1-dom \
    php8.1-mbstring \
    php8.1-simplexml \
    php8.1-phar \
    php8.1-dev \
    php8.1-amqp \
    php8.1-redis \
    unzip \
    wget \
    git -y && \
    mkdir /run/php

WORKDIR /var/www/symfony

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ 
    php composer-setup.php && \
    php -r "unlink('composer-setup.php');" && \
    mv composer.phar /usr/local/bin/composer

RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash &&\
    apt install symfony-cli

COPY composer.json composer.lock symfony.lock ./

COPY . .

RUN composer install

CMD ["php-fpm8.1", "-F"]

EXPOSE 9000

我的项目的

  • docker-compose -

代码语言:javascript
复制
version: "3.8"

services:
  nginx:
    restart: unless-stopped
    image: nginx:latest
    ports:
      - 1999:80
    volumes:
      - ./app/symfony:/var/www/symfony
      - ./conf/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php-fpm
      - db

  php-fpm:
    restart: always
    build:
      context: ./app/symfony
    ports:
      - 9000:9000
    volumes:
      - ./app/symfony:/var/www/symfony
    depends_on:
      - db
    healthcheck:
      test: [ "CMD", "php", "-v" ]
      timeout: 30s
      interval: 2s
      retries: 30

  db:
    image: mysql:8
    ports:
      - 3306:3306
    restart: always
    volumes:
      - ./database:/var/lib/mysql
    environment:
      MYSQL_ROOT_USER: root
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: docker
      MYSQL_USER: user
      MYSQL_PASSWORD: user_password

  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8888:80
    depends_on:
      - db

  node_express:
    image: tlugat/debian_express
    build:
      context: ./app/express
    restart: unless-stopped
    ports: 
      - 8081:8081

  react:
    image: tlugat/debian_react
    build:
      context: ./app/react
    restart: unless-stopped
    ports: 
      - 3000:3000
      
  maildev:
    image: maildev/maildev
    ports: 
      - 1080:1080

  • .default.conf- conf/ngnix/default.conf

代码语言:javascript
复制
server {
    listen 80;
    index index.php;
    server_name localhost;
    root /var/www/symfony/public;   
    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\\.php(/|$) {
        fastcgi_pass php-fpm:9000;
        fastcgi_split_path_info ^(.+\\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;

        internal;
    }

    location ~ \\.php$ {
        return 404;
    }

}
EN

回答 1

Stack Overflow用户

发布于 2022-11-30 21:53:45

当您使用docker将ngnix与php-fpm连接时,我找到了问题的解决方案--就像您的vm中有vm一样,所以坞客找到了它,但是当您传递给他时,不知道该怎么做: fastcgi_pass php-fpm: 9000;您只需要将ngnix重定向到PHP-fpm,就像这样,docker理解他需要将它们连接在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74621878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档