도커 컨테이너 내에 PHP Composer를 설치하는 방법
나는 도커와 라라벨을 이용하여 개발 환경을 만드는 방법을 생각해 보려고 한다.
도커 파일은 다음과 같습니다.
FROM php:7.1.3-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev \
mysql-client libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& docker-php-ext-install mcrypt pdo_mysql
&& chmod -R o+rw laravel-master/bootstrap laravel-master/storage
Larabel에서는 데이터베이스 이행 작업 시 작곡가가 작곡가 덤프 자동 로드를 호출해야 합니다.그래서 도커 컨테이너 안에 작곡가가 필요합니다.
나는 시도했다.
RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer
하지만 내가 전화했을 때
docker-compose up
docker-compose exec app composer dump-autoload
다음의 에러가 발생합니다.
rpc error: code = 13 desc = invalid header field value "oci runtime error: exec failed: container_linux.go:247: starting container process caused \"exec: \\\"composer\\\": executable file not found in $PATH\"\n"
도커 파일 내의 PATH에 작곡가를 추가하는 방법이나 이 오류를 극복하기 위해 할 수 있는 다른 방법을 알려주시면 감사하겠습니다.
당신의 후원에 대해 감사해요.또한 docker-compose.yml 파일 또는 기타 필요한 경우 gitub 저장소입니다.
도커 파일:
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
테스트 도커 파일에 다음 행을 추가하여 작곡가를 설치할 수 있습니다.
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
도커 파일은 다음과 같습니다.
FROM php:7.1.3-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev \
mysql-client libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& docker-php-ext-install mcrypt pdo_mysql
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
컴포저가 인스톨 되어 있는지를 테스트하려면 , 컨테이너 bash 에 액세스 해 다음의 조작을 실행합니다.
composer --version
Composer version 1.6.5 2018-05-04 11:44:59
2021년에 Larabel 8.4를 사용하여 Google Cloud의 CloudRun에 배포하는 방법은 다음과 같습니다.
도커 파일
#Get Composer
FROM composer:2.0 as vendor
WORKDIR /app
COPY database/ database/
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install \
--no-interaction \
--no-plugins \
--no-scripts \
--no-dev \
--prefer-dist
COPY . .
RUN composer dump-autoload
// 다음과 같은 커스텀 스텝이 몇 개 더 있습니다.
FROM node:14.9 as frontend
...
FROM php:7.4-fpm
...
// Composer 의존관계 복사
# Copy Composer dependencies
COPY --from=vendor app/vendor/ ./vendor/
COPY . .
// 기타 커스텀 스텝
...
최적화된 캐시를 클리어하여 앱을 시작하는 Dockerfile 종료
# Run Laravel commands
RUN php artisan optimize:clear
CMD php artisan serve --host=0.0.0.0 --port=8080
EXPOSE 8080
다음을 사용하여 컴포저 파일의 실행 파일을 만듭니다.
RUN curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/bin --filename=composer && chmod +x /usr/bin/composer
기본적으로 동일한 명령어가 실행되고 있으며, 그 차이는 없습니다.
--install-dir=/usr/local/bin
또는 $PATH 변수에 Composer bin 파일 경로를 추가해야 합니다.
export PATH=$PATH":/usr/bin"
다른 방법을 제안하고 싶습니다.
도커 파일:
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
FROM php:7.3-fpm-alpine
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
RUN apk update
RUN apk upgrade
RUN apk add bash
RUN alias composer='php /usr/bin/composer'
사용하다composer
도커 파일에서 사용curl
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
도커 파일
FROM 8.1.4-fpm
RUN apt-get update && apt-get install -y \
git \
curl \
zip \
unzip
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
WORKDIR /var/www
내 문제는 해결되었다.그냥 멈췄어요firewalld
시스템상의 서비스
언급URL : https://stackoverflow.com/questions/51443557/how-to-install-php-composer-inside-a-docker-container
'itsource' 카테고리의 다른 글
JavaScript에서 정의되지 않은 변수 또는 null 변수를 확인하는 방법은 무엇입니까? (0) | 2022.11.26 |
---|---|
특수한 포인터onCreate()의 뷰에 액세스하는 예외 (0) | 2022.11.26 |
도커 컨테이너 내에서 호스트 시스템의 MySQL 데이터베이스 액세스 (0) | 2022.11.26 |
요소는 (…의 경우) 루프에서 정렬됩니다. (0) | 2022.11.26 |
Symfony 2에서 요청 매개 변수를 얻는 방법은 무엇입니까? (0) | 2022.11.26 |