我得到了一个包含使用Docker / Symfony的PHP应用程序的存储库。我能够成功运行docker-compose up --build,看起来一切都已成功运行。当我运行docker ps --all时,我看到了我期望的一切

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
65d7f22b6b13        nginx               "nginx -g 'daemon ..."   16 minutes ago      Up 7 minutes        0.0.0.0:8086->80/tcp   symfony_nginx_1
4fa3c58d1eea        symfony_fpm         "docker-php-entryp..."   16 minutes ago      Up 7 minutes        9000/tcp               symfony_fpm_1
7316d40b1b8c        mysql:5.5           "docker-entrypoint..."   16 minutes ago      Up 7 minutes        3306/tcp               symfony_mysql_1
cac0757e2f6d        redis:latest        "docker-entrypoint..."   16 minutes ago      Up 7 minutes        6379/tcp               symfony_redis_1

当我尝试在浏览器中访问localhost:8086时,连接被拒绝。虽然我的本地配置可能有些混乱,但在另一台机器上尝试了同样的结果。我试图通过运行docker logs 65d7f22b6b13来获取nginx图像的日志,但是它什么也不返回。

关于docker / nginx和端口转发,我做不正确的事情是我不了解的吗?以下是我的docker配置
version: '2'

services:
  nginx:
    image: nginx
    ports:
      - "8086:80"
    volumes:
      - ./:/var/www/symfony
      - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
    links:
      - fpm

  fpm:
    build: docker/php-fpm/
    links:
      - redis
      - mysql
    volumes:
      - ./:/var/www/symfony
      - ./docker/php-fpm/php-ini-overrides.ini:/usr/local/etc/php/conf.d/99-overrides.ini

  mysql:
    image: mysql:5.5
    environment:
      MYSQL_DATABASE: devdb
      MYSQL_USER: devdb
      MYSQL_PASSWORD: devdb
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./backup.sql.gz:/docker-entrypoint-initdb.d/backup.sql.gz

  redis:
    image: redis:latest

我使用的是OSX 10.11.6-感谢您的帮助。 Symfony和Docker是我的新手。

编辑以下是我的Nginx配置文件-我更新了listen以使用127.0.0.1:8086,但在运行0.0.0.0时仍然使用docker ps看到它
server {
    listen 127.0.0.1:80 default;

    client_max_body_size 108M;

    access_log /var/log/nginx/symfony.access.log;

    root /var/www/symfony/web;

    rewrite ^/index\.php/?(.*)$ /$1 permanent;

    try_files $uri @rewriteapp;

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

    # Deny all . files
    location ~ /\. {
        deny all;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass fpm:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_index index.php;
        send_timeout 1800;
        fastcgi_read_timeout 1800;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/var/log/nginx/routemap3_php_errors.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }

    # Statics
        location /(bundles|media) {
        access_log off;
        expires 30d;
        try_files $uri @rewriteapp;
    }

}

最佳答案

您的答案在您的问题中:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
65d7f22b6b13        nginx               "nginx -g 'daemon ..."   16 minutes ago      Up 7 minutes        0.0.0.0:8086->80/tcp   symfony_nginx_1

现在,如果您仔细阅读PORTS列,您将看到0.0.0.0:8086->80/tcp,这意味着端口0.0.0.0上的本地循环8086映射到80容器的端口ngnix,并且已映射到tcp协议(protocol)。

因此,您要访问的正确网址是http://0.0.0.0:8086/

您还必须更改您的NGINX配置以适应该配置,它应显示为:
listen 0.0.0.0:80;

甚至更好:
listen *:80;

关于symfony - 无法访问本地主机上的Docker Nginx镜像-OSX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44032246/

10-12 12:30
查看更多