我有一个docker-compose.yml脚本,它看起来像这样:
version: '2'
services:
php:
build: ./docker/php
volumes:
- .:/var/www/website
DockerFile位于中/docker.php看起来像这样:
FROM php:fpm
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
RUN composer update -d /var/www/website
Eventho此操作总是以错误失败
[RuntimeException]
Invalid working directory specified, /var/www/website does not exist.
当我删除RUN composer更新行并输入容器时,该目录确实存在并包含我的项目代码。
请告诉我我是否做错了什么,或者我是否在错误的地方更新了作曲家
RUN ...
行在构建图像时运行。卷已附加到容器。这里至少有两个选项:
- 使用
COPY
命令将你的应用程序代码复制到映像中,这样该命令之后的所有命令都可以访问它。(不要将映像推送到任何公共Docker repo,因为它将包含你可能不想泄露的源代码( - 使用在容器上运行的命令安装composer依赖项(Dockerfile中的
CMD
或ENTRYPOINT
或docker composer中的command
选项(
您正在将本地卷装载到构建目录上,因此当容器运行时,您在"/var/www/website"中构建的任何内容都将由本地卷装载。