2017-04-06 62 views
1

我正嘗試將代碼從主機分享到phpnginx容器。這裏是我的docker-compose.yml如何使用命名卷將數據從主機共享到容器?

version: "3" 
services: 
    php: 
    image: php:fpm 
    container_name: php 
    ports: 
     - 9000:9000 
    volumes: 
     - php_data:/var/www/html/ 

     # configs 
     - ./php/config:/usr/local/etc/php 

    nginx: 
    image: nginx 
    ports: 
     - 80:80 
    volumes: 
     - php_data:/var/www/html 

     # logs 
     - ./nginx/logs:/var/log/nginx 

     # configs 
     - ./nginx/config/default.conf:/etc/nginx/conf.d/default.conf:ro 
     - ./nginx/config/nginx.conf:/etc/nginx/nginx.conf:ro 

volumes: 
    php_data: 
    ./code 

錯誤時運行docker-compose up是:

ERROR: In file './docker-compose.yml', volume 'php_data' must be a mapping not a string.

我如何做搬運工,撰寫知道,我需要./codenginx和PHP containers共享?

+0

它不回答你的問題,但如果這是足以讓你分享的容器,而不是主機的體積,你可以去掉最後一行「./code」如[documentation]中所示(https://docs.docker.com/compose/compose-file/#volume-configuration-reference) – herm

回答

0

多克說,它需要一個映射,所以你需要設置類似./code:{map}您的批量

我覺得你在這裏有2個選項。由於您在兩個容器上共享代碼映射到/ var/www/html。

選項1 設置/ var/www/html等地圖將在體積:

volumes: 
    php_data: 
    ./code:/var/www/html 

然後更改的/ var/www/html等來/你的容器。

選項2

volumes: 
    php_data: 
    ./code:/ 
+0

用'然後將/ var/www/html更改爲/在您的容器中。是否改變'docker-compose.yml'中的行?即'卷: - php_data:/'? – Andru