简体   繁体   中英

Running composer install in docker container

I have a docker-compose.yml script which looks like this:

version: '2'
services:
  php:
    build: ./docker/php
  volumes:
    - .:/var/www/website

The DockerFile located in ./docker/php looks like this:

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 this always fails with the error

[RuntimeException]
Invalid working directory specified, /var/www/website does not exist.

When I remove the RUN composer update line and enter the container, the directory does exist and contains my project code.

Please tell me if I am doing anything wrong OR if I'm doing the composer update on a wrong place

RUN ... lines are run when the image is being built. Volumes are attached to the container. You have at least two options here:

  • use COPY command to, well, copy your app code to the image so that all commands after that command will have access to it. (Do not push the image to any public Docker repo as it will contain your source that you probably don't want to leak)
  • install composer dependencies with command run on your container ( CMD or ENTRYPOINT in Dockerfile or command option in docker-compose)

您正在将本地卷挂载到构建目录上,因此在容器运行时,在'/ var / www / website'中构建的任何内容都将被本地卷挂载。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM