无法在localhost - OSX上访问docker nginx映像

时间:2017-05-17 18:23:13

标签: symfony nginx docker

我使用Docker / Symfony给了一个包含PHP应用程序的repo。我能够成功运行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时,我拒绝连接。我虽然也许我的本地配置可能是janky并尝试在另一台具有相同结果的机器上。我试图通过运行docker logs 65d7f22b6b13来获取nginx图像的日志,但它什么也没有返回。

我是否对我不正确的docker / nginx和端口转发有所了解?下面是我的docker config

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;
    }

}

1 个答案:

答案 0 :(得分:0)

你的答案在你的问题中:

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映射到端口{{1您的80容器,以及ngnix协议。

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

你还必须更改你的NGINX配置以适应它,它应该是:

tcp

甚至更好:

listen 0.0.0.0:80;