【问题标题】:run symfony2 app with docker [File not found.]使用 docker 运行 symfony2 应用程序 [找不到文件。]
【发布时间】:2017-01-26 12:51:46
【问题描述】:

我正在尝试使用 docker 运行我的 symfony 应用程序。我已经下载了这个捆绑包eko/docker-symfony

我已将我的 symfony 项目复制到我的 docker 目录中。

如果我用 localhost 刷新,我有这个错误:找不到文件。

如果我将端口 81 放在 localhost 之后,Kibana 的页面就会购物。

当我运行docker ps时,我注意到我所有容器的IP都是0.0.0.0

docker-compose.yml

version: '2'
services:
    db:
        image: mysql
        ports:
            - "3306:3306"
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: symfony
            MYSQL_USER: symfony
            MYSQL_PASSWORD: symfony
    php:
        build: ./php-fpm
        expose:
            - "9000"
        volumes:
            - ./symfony:/var/www/symfony
            - ./logs/symfony:/var/www/symfony/app/logs
        links:
            - db
    nginx:
        build: ./nginx
        ports:
            - "80:80"
        links:
            - php
        volumes_from:
            - php
        volumes:
            - ./logs/nginx/:/var/log/nginx
    elk:
        image: willdurand/elk
        ports:
            - "81:80"
        volumes:
            - ./elk/logstash:/etc/logstash
            - ./elk/logstash/patterns:/opt/logstash/patterns
        volumes_from:
            - php
            - nginx

symfony.conf

server {
    server_name symfony.dev;
    root /var/www/symfony/web;


    location / {
        try_files $uri @rewriteapp;
    }

    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }

    location ~ ^/(app|app_dev|config)\.php(/|$) {
        fastcgi_pass php-upstream;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }

    error_log /var/log/nginx/symfony_error.log;
    access_log /var/log/nginx/symfony_access.log;
}

【问题讨论】:

    标签: php symfony docker docker-compose


    【解决方案1】:

    我认为问题出在端口 80。这可能会在您的主机上查找文件。

    您可以尝试在不同的端口 f.e 下运行 nginx。 8001

    nginx:
            build: ./nginx
            ports:
                - "8001:80"
    

    并调用

    http://localhost:8001

    或使用主机名。引用 eko/docker-symfony 的自述文件

    ...不要忘记在 /etc/hosts 文件中添加 symfony.dev。

    喜欢

    127.0.0.1 symfony.dev
    

    然后就可以调用了

    http://symfony.dev

    【讨论】:

    • 在我的主机文件中,我添加了这一行:# localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost # 172.18.0.3 symfony.dev 如果我运行docker ps,我可以看到我所有容器的IP 地址都是0.0.0.0。当我使用http://localhost:8001http://symfony.dev 刷新我的页面时,出现此错误:无法访问该页面。
    • 我正在使用 docker for windows 10 和子网地址 IP:10.0.75.0
    • 看起来像是用#注释的行,为什么是172.18.0.3 symfony.dev
    • 我已将此 ip 172.18.0.3 替换为 127.0.0.1。我已经删除了 ip 旁边的井号。现在如果我要去symfony.dev:81 kibana 出现,但是带有 symfony.dev 的页面仍然无法正常工作。
    • 您遇到什么错误? nginx 的端口还是 80:80 吗?
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2017-10-09
    • 2020-10-11
    • 2015-06-15
    相关资源
    最近更新 更多