使用Docker的Nginx,PHP-FPM,MySQL和Symfony:Nginx 502 Bad Gateway和Symfony没有发现路由异常

And*_*arz 5 php mysql nginx symfony docker

这个帖子会很长,所以请确保你附近有东西可以喝.

基本上,我想使用Docker制作一个Nginx容器,一个PHP-FPM容器,一个MySQL容器和一个Symfony容器,它将包含我的Symfony应用程序的代码.

我一直在尝试让事情工作一整周,阅读了很多东西,但遗憾的是没有任何效果.

我制作了一个docker-compose.yml,它将Dockerfiles用于Nginx,PHP-FPM和Symfony.MySQL基于Dockerhub上托管的映像.

我安装了所有东西,最后,经过一周的工作,我仍然遇到两种类型的错误:

Nginx随机给我"502 Bad Getaway".这主要是因为端口错误,好像我的nginx fastcgi_pass参数没有设置为正确的值,但它是,所以我不太明白这个问题.

然后,Symfony给了我一个"找不到GET /的路线",但我不明白为什么,因为该网站实际上是在制作和我的同事.我对数据库持怀疑态度,因为当数据库为空时它可能会给我这个错误.所以我从数据库中获取了一个转储,但它没有给出任何结论.

这是您可能想要的文件

  • 泊坞窗,compose.yml

     version:'2'
    
    services:
      symfony:
        build: symfony/
        volumes:
          - ./symfony/code/:/var/www:rw
          - ./symfony/code/app/logs/symfony:/var/www/project/app/logs/symfony:rw
          - ./symfony/code/app/logs/nginx:/var/www/project/app/logs/nginx:rw
    
      nginx:
        build: nginx/
        ports:
        - 8080:80
        links:
        - fpm
        volumes_from:
        - symfony
        environment:
            <APP_SERVER_NAME>: dev-machine
    
      fpm:
        build: php-fpm/
        links:
        - mysql
        volumes_from:
        - symfony
        environment:
          APP_SERVER_NAME: dev-machine
    
      mysql:
        image: mysql
        ports:
        - 3306:3306
        volumes:
        - ./.data/db:/var/lib/mysql:rw
        environment:
        - "MYSQL_ROOT_PASSWORD=root"
        - "MYSQL_USER=root"
        - "MYSQL_PASSWORD=root"
        - "MYSQL_DATABASE=databaseName"
    
    Run Code Online (Sandbox Code Playgroud)
  • Nginx Dockerfile

    FROM ubuntu:14.04
    
    ENV DEBIAN_FRONTEND noninteractive
    
    RUN apt-get update && apt-get install -y \
    nginx
    
    ADD nginx.conf /etc/nginx/nginx.conf
    
    ADD vhost.conf /etc/nginx/sites-enabled/default
    
    ADD start.sh /start.sh
    
    EXPOSE 80
    
    ENTRYPOINT ["/start.sh"]
    
    Run Code Online (Sandbox Code Playgroud)
  • 我的nginx.conf文件有这个

    proxy_buffer_size   128k;
    proxy_buffers   4 256k;
    proxy_busy_buffers_size   256k;
    
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    
    Run Code Online (Sandbox Code Playgroud)
  • vhost.conf

    server {
        listen       80;
    
        server_name  project.dev;
        access_log   /var/log/nginx/symfony-access.log;
        error_log    /var/log/nginx/symfony-error.log;
    
        #server_name  dev-machine;
        #access_log   /dev/stdout;
        #error_log    /dev/stdout info;
    
        root /var/www/web;
        index app_dev.php;
    
        location / {
                try_files $uri $uri/ /app_dev.php?$query_string;
        }
    
        location ~ ^/(app|app_dev)\.php(/|$) {
                fastcgi_pass fpm:9000;
                include fastcgi_params;
                fastcgi_param HTTPS off;
                try_files $uri =404;
                fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                fastcgi_index app_dev.php;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • PHP-FPM Dockerfile

    FROM ubuntu:14.04
    
    ENV DEBIAN_FRONTEND noninteractive
    
    RUN apt-get update && apt-get install -y \
        git \
        nano \
        curl \
        php5-cli \
        php5-fpm \
        php5-json \
        php5-intl \
        php5-gd \
        php5-mysql
    
    # Set timezone
    RUN rm /etc/localtime
    RUN ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
    RUN "date"
    
    # Install Composer
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    RUN composer --version
    
    ADD start.sh /start.sh
    ADD symfony_environment.sh /etc/profile.d/symfony_environment.sh
    
    EXPOSE 9000
    
    WORKDIR /var/www
    
    ENTRYPOINT ["/start.sh"]
    
    Run Code Online (Sandbox Code Playgroud)
  • Symfony Dockerfile

    FROM ubuntu:14.04
    
    ENV DEBIAN_FRONTEND noninteractive
    
    RUN apt-get update && apt-get install -y \
        git \
        curl \
        php5-cli \
        php5-json \
        php5-intl \
        php5-gd
    
    RUN curl -sS https://getcomposer.org/installer | php
    RUN mv composer.phar /usr/local/bin/composer
    
    ADD entrypoint.sh /entrypoint.sh
    ADD ./code /var/www
    ADD symfony_environment.sh /etc/profile.d/symfony_environment.sh
    
    WORKDIR /var/www
    
    ENTRYPOINT ["/entrypoint.sh"]
    CMD ["echo", "hello"]
    
    Run Code Online (Sandbox Code Playgroud)

我在数据库中加载了转储,parameters.yml如下所示:

    database_driver: pdo_mysql
        database_host: mysql
        database_port: 3306
        database_name: <databaseName>
        database_user: root
        database_password: root
Run Code Online (Sandbox Code Playgroud)

我真的不知道该怎么做,欢迎任何线索,我认为这将有助于将来很多人.