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.json
PHP 확장을 다시 설치하고 apt를 업데이트하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다