Почему мой том не копируется в его докер-контейнер? - PullRequest
2 голосов
/ 05 апреля 2019

Я пытаюсь запустить контейнер веб-сервера с nginx и сервером php-fpm, на котором запущено приложение Laravel.В этом каталоге находятся внешний и внутренний каталог, поэтому мои пути не отключены в файлах конфигурации.

Я устанавливаю файл docker-compose.yml

version: '2'
services:
  webserver:
    build:
      context: ./
      dockerfile: webserver.docker
    volumes:
      - /home/colesam/Documents/code/todo/backend:/var/www
    ports:
      - "8080:80"
    links:
      - backend
  backend:
    build:
      context: ./
      dockerfile: backend.docker
    volumes:
      - ./home/colesam/Documents/code/todo/backend:/var/www

И php-fpm Dockerfile (backend.docker)

FROM php:7.2-fpm

RUN apt-get update -y && apt-get install -y libmcrypt-dev openssl
RUN pecl install mcrypt-1.0.2
RUN docker-php-ext-enable mcrypt
RUN docker-php-ext-install pdo mbstring
RUN apt-get install -y apt-transport-https
RUN apt-get install -y curl
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN chown -R www-data:www-data /var/www
VOLUME ["/var/www"]
RUN ls -al /var/www
WORKDIR /var/www
RUN composer install

И Dockerfile веб-сервера nginx (webserver.docker)

FROM nginx:1.10

ADD ./vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www

По какой-то причине, когда я запускаю docker-compose up -d --build, я всегда терплю неудачу на этом этапе процесса сборки:

Step 13/13 : RUN composer install
 ---> Running in 65bb97f03004
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Composer could not find a composer.json file in /var/www
To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
ERROR: Service 'backend' failed to build: The command '/bin/sh -c composer install' returned a non-zero code: 1

С последней строки вывода это выглядит так, как будто произошел сбой, поскольку / var / www / пусто и файлы не скопированы, как composer.json.Я много оглядывался по сторонам, и эта проблема переполнения стека , казалось, была наиболее связана с тем, что происходило, но я думаю, что уже следую всему, что предлагает принятый ответ.

Нужно ли включатькоманда COPY или ADD, хотя я монтирую папку через том?

1 Ответ

0 голосов
/ 05 апреля 2019

На этапе сборки не видны подключенные тома. Единственное, что доступно для «сборки» - это вещи, определенные в backend.docker и в разделе компоновки сборки:

    build:
      context: ./
      dockerfile: backend.docker

Нужно ли включать команду COPY или ADD, даже если я монтирую папку через том?

Да, измените ваш backend.docker аналогично этому

...
WORKDIR /var/www
ADD composer.json .
RUN composer install
...