2017-06-15 40 views
0

我想配置與碼頭工人一LEMP開發環境,並因與nginx麻煩,因爲我似乎無法重啓nginx一旦它有它的新配置。泊塢窗 - nginx的自定義配置

docker-compose.yml

version: '3' 
services: 
    nginx: 
    image: nginx 
    ports: 
     - '8080:80' 
    volumes: 
     - ./nginx/log:/var/log/nginx 
     - ./nginx/config/default:/etc/nginx/sites-available/default 
     - ../wordpress:/var/www/wordpress 
    php: 
    image: php:fpm 
    ports: 
     - 9000:9000 
    mysql: 
    image: mysql 
    ports: 
     - "3306:3306" 
    environment: 
     MYSQL_ROOT_PASSWORD: secret 
    volumes: 
     - ./mysql/data:/var/lib/mysql 

我有一個自定義nginx配置替換/etc/nginx/sites-available/default,並在一個普通的Ubuntu環境下,我會跑service nginx restart在新的配置來拉。

但是,如果我試圖做到這一點,Docker環境下,nginx容器exits with code 1

docker-compose exec nginx sh 
service nginx restart 

-exit with code 1- 

我如何將能夠使用nginx用自定義/etc/nginx/sites-available/default文件?

回答

1

Docker容器應該在前臺運行一個應用程序。當它在容器退出時啓動的過程是pid 1,容器也是如此(類似於在Linux服務器上殺死pid 1將關閉該機器)。此過程不受OS服務命令管理。

在容器中重新加載配置的正常方法是重新啓動容器。由於您使用的是docker-compose,那將是docker-compose restart nginx。請注意,如果此配置是圖像的一部分,則需要重新構建並重新部署新容器,但由於您使用的是卷,因此這不是必需的。

+0

我嘗試使用'docker-compose restart nginx'並重新啓動容器,但是我的預期配置沒有被拉入。這可能是因爲這種情況下的配置路徑是'/etc/nginx/conf.d/default.conf'而不是'/ etc/nginx/sites-available/default'。但是,在安裝卷時:' - ./nginx/config:/ etc/nginx/conf.d',nginx容器在啓動後立即退出。無論如何,你已經回答了我原來的問題。如果您有關於如何找出集裝箱爲什麼立即退出的建議,我很樂意聽到它。 –