2015-05-10 10 views
3

У меня есть файл конфигурации Dockerfile и пользовательские Nginx (в той же директории с Dockerfile) следующим образом:Как запустить контейнер nginx docker с настраиваемой конфигурацией?

Dockerfile:

FROM nginx 

COPY nginx.conf /etc/nginx/nginx.conf 

nginx.conf файла:

upstream myapp1 { 
      least_conn; 
      server http://domain.com:81; 
      server http://domain.com:82; 
      server http://domain.com:83; 
    } 

server { 
      listen 80; 

      location/{ 
      proxy_pass http://myapp1; 
      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection 'upgrade'; 
      proxy_set_header Host $host; 
      proxy_cache_bypass $http_upgrade; 
      } 
    } 

Я бегу эти две команды:

docker --tls build -t nginx-image . 
docker --tls run -d -p 80:80 --name nginx nginx-image 

Тогда я chec вытащил все запущенные контейнеры, но он не появился. Когда я искал журнал Nginx контейнера, я нашел это сообщение об ошибке:

[Экстрен] 1 # 1: неизвестная директива "вверх" в /etc/nginx/nginx.conf:1 Nginx: [Экстрен] неизвестное директива «вверх по течению» в /etc/nginx/nginx.conf:

Что мне не хватает?

+0

Это не выглядит как настоящий главным Nginx. файл conf, файл, который вы опубликовали, должен находиться под директивой 'http', скорее всего, в каталоге'/etc/nginx/conf.d/'добавлена ​​строка include в директиве http. –

ответ

4

Как указано в NGiNX documentation, upstream должен быть определен в контексте http.

Как уже упоминалось в nginx unkown directive “upstream:

Когда этот файл включается обычно от nginx.conf, она уже включена внутри http контекста:

http { 
    include /etc/nginx/sites-enabled/*; 
} 

Вы либо должны использовать -c /etc/nginx/nginx.conf или сделать небольшую обертку, подобную вышеуказанному блоку, и nginx -c.

В случае Докер, вы можете увидеть различные варианты с abevoelker/docker-nginx:

docker run -v /tmp/foo:/foo abevoelker/nginx nginx -c /foo/nginx.conf 

Для дефолта nginx.conf, check your CMD:

CMD ["nginx", "-c", "/data/conf/nginx.conf"] 
Смежные вопросы