我有一个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到我的服务,使用相同的方法,它不起作用。谢谢你的帮助。
答案 0 :(得分:0)
如果您正在Windows上进行测试,则文件同步可能会出现问题。
在这种情况下,您可以尝试排除vendor
目录,请参阅:Add a volume to Docker, but exclude a sub-folder
答案 1 :(得分:0)
由于它在Windows上不起作用,但在macOS上却起作用,请尝试:
/var/www/html
和vendor
文件夹的权限,因为您可能会从不支持Linux权限的NTFS文件系统共享该文件夹,检查文件或文件夹是否已被某些正在运行的进程(例如Shell或IDE编辑器)锁定。
例如,使用Process Explorer,从查找菜单中选择查找句柄或DLL ,然后键入文件夹名称。
我遇到了类似的问题,我已经描述过here。