docker composer install RunTimeException / var / www / html / vendor不存在且无法创建

时间:2017-05-11 02:52:23

标签: php docker-compose

我有一个laravel项目。这是我的docker-compose.yml文件。

nginx:
    build: ./nginx/
    ports:
        - 90002:80
    links:
        - php
    volumes_from:
        - app

php:
    build: ./php/
    expose:
        - 9000
    links:
        - mysql
    volumes_from:
        - app

composer:
    image: composer/composer
    volumes_from:
        - php
    working_dir: /var/www/html

app:
    image: php:7.0-fpm
    volumes:
        - ./test-api:/var/www/html
    command: "true"

mysql:
    image: mysql:latest
    volumes_from:
        - data
    environment:
        MYSQL_ROOT_PASSWORD: test
        MYSQL_DATABASE: user
        MYSQL_USER: uesr
        MYSQL_PASSWORD: test

data:
    image: mysql:latest
    volumes:
        - /var/lib/mysql
    command: "true"

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 90003:80
    links:
        - mysql
    environment:
        PMA_HOST: mysql

我运行此命令。

$ docker-compose build --no-cache
$ docker-compose up -d
$ docker-compose run --rm composer install # error

我收到了错误消息

[RuntimeException]
/var/www/html/vendor does not exist and could not be created.

我试过我的Mac,它的工作。但ssh到我的服务,使用相同的方法,它不起作用。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

如果您正在Windows上进行测试,则文件同步可能会出现问题。

在这种情况下,您可以尝试排除vendor目录,请参阅:Add a volume to Docker, but exclude a sub-folder

类似的问题:Problem when I execute npm install on docker

答案 1 :(得分:0)

由于它在Windows上不起作用,但在macOS上却起作用,请尝试:

  • 仔细检查主机上/var/www/htmlvendor文件夹的权限,因为您可能会从不支持Linux权限的NTFS文件系统共享该文件夹,
  • 检查文件或文件夹是否已被某些正在运行的进程(例如Shell或IDE编辑器)锁定。

    例如,使用Process Explorer,从查找菜单中选择查找句柄或DLL ,然后键入文件夹名称。

    我遇到了类似的问题,我已经描述过here