Docker uruchomienie composer install

0

Hej mam pytanie odnośnie Dockera próbuję właśnie postawić środowisko ale tak żeby wszystko odpalało się jedną komendą czyli chciałbym odpalić tylko docker-compose up -d i mieć całe gotowe środowisko.
Mam taki plik Dockerfile

FROM php:7.0-fpm

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install -y \
    git \
    unzip \
    zlib1g-dev \
    zlib1g \
    libicu-dev \
    g++ \
    curl \
    libcurl4-gnutls-dev \
    libxml2-dev \
    libpng12-dev \
    libc-client-dev \
    libkrb5-dev \
    apt-utils \
    libmcrypt-dev

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version

RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
    && docker-php-ext-install imap

RUN docker-php-ext-install pdo pdo_mysql zip mbstring intl curl xml gd soap mcrypt mysqli

RUN pecl install xdebug
RUN docker-php-ext-enable xdebug

RUN apt-get install bzip2

RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs

RUN npm install bower -g
RUN npm install gulp-cli -g

ADD php.ini /usr/local/etc/php/php.ini

WORKDIR /var/www/blog

RUN composer install

plik dockercompose.yml:

version: '2'

services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: blogpassword
      MYSQL_DATABASE: blog
      MYSQL_USER: blog
      MYSQL_PASSWORD: blog
    volumes:
      - "./.data/db:/var/lib/mysql"
      - .:/var/www/blog

  php:
    build: php7-fpm
    volumes:
      - .:/var/www/blog
    expose:
      - "9000"
    links:
      - db

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8090:80"

  nginx:
    image: nginx:latest
    links:
      - php
    volumes_from:
      - php
    volumes:
      - ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf
    ports:
      - "8080:80"

I cały czas dostaję błąd Composer could not find a composer.json file in /var/www/blog, nie do końca chyba rozumiem jak zmapować prawidłowo katalogi, czy ktoś wie w czym rzecz?

0

Czy w katalogu /var/www/blog masz plik composer.json? Jak nie to umieść tam jakiś i wtedy sprawdź.

0

Plik oczywiście jest, katalog projektu jest mapowany . /var/www/blog

0

Wydaje mi się, że być może Dockerfile jest budowany jeszcze przed instrukcjami z docker-compose.yml. Udało mi się zreprodukować ten błąd i jednym z rozwiązań jest usunięcie instrukcji composer install z Dockerfile i uruchomienie komendy w docker-compose.yml:

php:
    build: php7-fpm
    volumes:
      - .:/var/www/blog
    expose:
      - "9000"
    links:
      - db
    command: "composer install"
0

Odświeżam trochę temat, bo mam podobny problem. Jedyne jak do tej pory udało mi się odpalić composer install, to albo jeżeli dodam w Dockerfile COPY . /moj/projekt (ale z tego co rozumiem, to wtedy moj projekt staje się częścią obrazu, a tego nie chce), albo ręcznie odpalam docker exec php_1 composer install. Czy mozna jakoś inaczej to wpleść w build?

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "4000:80"
    volumes:
      - ./.docker/web/xxx.conf:/etc/nginx/conf.d/default.conf
    links:
      - php
  php:
    build: ./.docker/php
    volumes:
      - ./:/srv/codebase/xxx.pl/repos
  db:
    image: mariadb
    environment:
      MYSQL_DATABASE: xxx
      MYSQL_USER: xxx
      MYSQL_PASSWORD: secret
  redis:
    image: redis

Poza tym co się stanie jeżeli jednocześnie użyję COPY i volumes z yamla, gdzie i jedno i drugie będzie miało tą samą ścieżkę?

1 użytkowników online, w tym zalogowanych: 0, gości: 1