Проблема с docker-compose, nginx и указанным местоположением

Это мой docker-compose.yml

version: '2' 
services: 
    nginx:
        image: nginx:1.11.8-alpine
        ports:
          - "8081:80"
        volumes:
          - ./code:/usr/share/nginx/html
          - ./html:/myapp
          - ./site.conf:/etc/nginx/conf.d/site.conf
          - ./error.log:/var/log/nginx/error.log
          - ./nginx.conf:/etc/nginx/nginx.conf

А это site.conf

server {

   listen 8081;
   index index.html index.php;
   server_name localhost;
   error_log  /var/log/nginx/error.log;

   location /html {
       root /myapp;
   }
}

Он работает на http://nginx-php-docker.local:8081/, показывая файл index.html, который находится внутри папки /code.

Но это не работает с http://nginx-php-docker.local:8081/html

Журнал ошибок

2017/01/13 08:50:27 [error] 7#7: 
  *4 open() "/usr/share/nginx/html/html" failed (2: No such file or directory), 
    client: 172.19.0.1, 
    server: localhost, 
    request: "GET /html HTTP/1.1", 
    host: "nginx-php-docker.local:8081"

person anhduc.bkhn    schedule 13.01.2017    source источник
comment
Как выглядит ваш nginx.conf?   -  person rckrd    schedule 13.01.2017
comment
@rckrd Это очень просто gist.github.com/anhducbkhn/21f2a35db1d9dfb5cbe089f658e36c3f   -  person anhduc.bkhn    schedule 13.01.2017


Ответы (3)


Вы настраиваете контейнер nginx для прослушивания порта 8081 в site.conf, это не имеет смысла, так как образ предоставляет порты 80 и 443.

Измените site.conf на:

server {
   listen 80;
   index index.html index.php;
   server_name localhost;
   error_log  /var/log/nginx/error.log;
   location / {
      root /usr/share/nginx/html;
   }

   location /html {
      alias /myapp;
   }
}

И следующая строка в docker-compose.yml:

volumes:  
  - ./site.conf:/etc/nginx/conf.d/default.conf
person rckrd    schedule 13.01.2017
comment
У меня возникла еще одна проблема с контейнером mysql, помогите stackoverflow.com/questions/41671935/ - person anhduc.bkhn; 16.01.2017

Отредактируйте свой файл компоновки, чтобы он был похож на этот, вы перенаправляете html-файл в неправильный каталог.

version: '2' 

services: 

nginx:

image: nginx:1.11.8-alpine
ports:
  - "8081:80"
volumes:
  - ./code:/var/www/html/
  - ./html:/myapp
  - ./site.conf:/etc/nginx/conf.d/site.conf
  - ./error.log:/var/log/nginx/error.log
  - ./nginx.conf:/etc/nginx/nginx.conf
person Tyr_90    schedule 01.03.2019

В вашем терминале выполните команду:

sudo setenfonce 0

Теперь повторно запустите команду docker.

person Marcus Pereira    schedule 13.08.2018