Docker для Windows. Не удается подключиться к nginx - PullRequest
0 голосов
/ 06 апреля 2020

Используя Windows 10 с Docker, я пытаюсь добраться до моего Linux контейнера с nginx. Я пытаюсь получить доступ к своему локальному хосту (или через IP-адрес) через веб-браузер, и я получаю сообщение «не могу открыть эту страницу». Внутри моего nginx контейнера, если я пытаюсь получить доступ к localhost или прямой IP-адрес с помощью CURL, я получаю «Отказ в соединении». Я - полный новичок в docker с Windows, и это кошмар, чтобы понять! Пробовал localhost:8080 и 172.18.0.4:8080 (это IP, показанный в docker inspect nginx_1)

Вот мой docker -compose.yml

version: '2'

volumes:
    database_data:
        driver: local

services:
    nginx:
        image: nginx:latest
        ports:
            - 8080:80
        volumes:
            - ./docker/nginx/default.conf:/etc/nginx/conf.d
        volumes_from: 
            - php
    php:
        build: ./docker/php
        expose: 
            - 9000
        volumes:
            - .:/var/www/html
    mysql:
        image: mysql:latest
        expose: 
            - 3306
        volumes:
            - database_data:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: secret
            MYSQL_DATABASE: project
            MYSQL_USER: project
            MYSQL_PASSWORD: project

А вот мой nginx файл default.conf:

server {
    listen 80 default_server;
    root /var/www/html/public;
    index index.php;
    charset utf-8;
    location / {

        try_files $uri $uri/ /index.php;

    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    sendfile off;
    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param APPLICATION_ENV development;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

Чего не хватает в моей конфигурации, что не позволяет мне получить доступ к моему индексу. php файла с моей хост-машины?

Большое спасибо !

1 Ответ

1 голос
/ 06 апреля 2020

Только что проверил вашу настройку, и она работала нормально для меня.

Поскольку вы уже получаете сообщение "не удается открыть эту страницу" из браузера, проблема уже в nginx, а не в контейнере php. когда контейнер php не работает, страница загружается и выдает ошибку nginx, например «Не удается найти файл» (например, индекс. php) или подобное.

Можете ли вы проверить правильность загрузки конфигурации nginx в контейнер? Для этого введите «docker exe c -it sh» и перейдите к файлу /etc/nginx/conf.d/default.conf

дополнительная информация

Вы не можете получить доступ к контейнеру nginx через 172.18.0.4:8080. Это ip контейнера, но вы связываете порт 8080 только с вашим хостом. Порт по умолчанию для контейнера nginx - 80. Поскольку «обычные» порты контейнера доступны только внутри сети docker, вы не можете получить доступ к контейнеру таким образом.

...