볼륨 디렉토리의 composer.json 파일이 dockerfile에서 실행되는 composer install 명령에 표시되지 않는 이유는 무엇입니까?

Codium

docker-compose.yml :

version: '3.3'
services:
    web:
        image: nginx:latest
        ports:
            - "8080:80"
        volumes:
            - ./api:/var/www/html/api
            - ./site.conf:/etc/nginx/conf.d/default.conf
        links:
            - php
    php:
        build:
            context: ./docker
            dockerfile: php.Dockerfile
        volumes:
        - ./api:/var/www/html/api
        links:
            - db
    db:
       image: mysql:5.7 
       environment:
         MYSQL_ROOT_PASSWORD: password
         MYSQL_DATABASE: symfony
         MYSQL_USER: symfony
         MYSQL_PASSWORD: symfony
       ports:
         - "9906:3306"

php.Dockerfile :

FROM php:7-fpm
WORKDIR /var/www/html/api
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get upgrade -y \
    && apt-get install -y git libzip-dev unzip \
    && docker-php-ext-install \
        pdo_mysql zip \
    && docker-php-ext-enable \
        pdo_mysql zip \
    && composer install \
    && bin/console make:migration

명령 출력 오류 : docker-compose build --no-cache:

Composer가 / var / www / html / api에서 composer.json 파일을 찾을 수 없습니다.

그러나 PHP 컨테이너 내부에있을 때 docker exec -it sf4_php_1 bash

그 참조 composer.json파일에 /var/www/html/api내가 실행할 수있어 composer install제대로.

내가 뭘 잘못하고 있니?

이비

볼륨은 빌드 시가 아니라 런타임에 마운트됩니다 .

이미지를 빌드 할 때 composer.json볼륨이 아직 마운트되지 않았기 때문에 이미지가 없습니다 .

실행하기 전에 빌드 프로세스에 필요한 모든 파일 composer install복사 해야합니다 .

예를 들어 Dockerfile다음과 같은 것이 더 좋습니다 .

(이 경우 Symfony 이미지에서 복사 한 것이므로 일부 Symfony 파일을 가져옵니다.)

COPY --from=composer /usr/bin/composer /usr/bin/composer

RUN apt-get update && apt-get upgrade -y \
    && apt-get install -y git libzip-dev unzip \
    && docker-php-ext-install \
        pdo_mysql zip \
    && docker-php-ext-enable \
        pdo_mysql zip

RUN mkdir -p /var/www/html/api
WORKDIR /var/www/html/api

COPY composer.json composer.lock symfony.lock .env.dist ./

RUN composer install \
    && bin/console make:migration

이것은 실제로 작동 할뿐만 아니라 애플리케이션 구축 및 플랫폼 요구 사항 설치를 위해 다른 계층을 생성합니다. 이로 인해 변경 사항이 composer.jsonPHP 확장을 다시 설치하고 apt를 업데이트하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관