2017-02-10 1 views
1

저는 컨테이너 안에 프로젝트가 있고 이미지 생성을 위해 gd 라이브러리를 사용하려고합니다.libgd가 php : 5.6-cli 도커에 설치되지 않았습니다.

apt-get install php5-gd 

아무것도 다시 시작한 후 변경하지 않고 php -m

는 어떻게해야 실행 :

나는 용기의 bash는 내부에이 명령을합니까?

편집 :

내 Dockerfile에 추가 : php -m

[PHP Modules] 
Core 
ctype 
curl 
date 
dom 
ereg 
fileinfo 
filter 
ftp 
hash 
iconv 
json 
libxml 
mbstring 
mysql 
mysqli 
mysqlnd 
openssl 
pcntl 
pcre 
PDO 
pdo_mysql 
pdo_sqlite 
Phar 
posix 
readline 
Reflection 
session 
SimpleXML 
SPL 
sqlite3 
standard 
tokenizer 
xml 
xmlreader 
xmlwriter 
zip 
zlib 
:

RUN apt-get -qq update && apt-get -qq install libpng-dev 
RUN docker-php-ext-install gd 

내가 실행 고정 표시기 구축 -t [이름]

하지만 bash는 입력을 실행할 때

+0

'배쉬 실행'이란 무엇을 의미합니까? 'php -m'을 어디서 어떻게 실행하려고하는지 정확히 알려 주실 수 있습니까? – k0pernikus

+0

@ k0pernikus'sudo docker exec -ti name bash' 안쪽에서'php -m' 사용 – Coluh

+0

나는 새로 생성 된 이미지가 아니라 오래된 컨테이너를 실행한다고 가정합니다. 이미지가 올바른 모듈인지 확인하기 위해 내 대답을 업데이트했습니다. – k0pernikus

답변

3

gd를 수동으로 설치하지 마십시오. 이를 위해 docker-php-ext-install이 있습니다. dockerfile 내부

는 추가 :

RUN docker-php-ext-install gd 

당신은 당신이 필요합니다 종속성을 수동으로 무엇인지 파악해야 docker-php-ext-install와 짜증의 비트가 있습니다. 자동으로 해결되지는 않습니다. 이로 인해, 명령과 함께 자체에 충돌합니다 : 오류를 찾을 경우

configure: error: png.h not found. 

, 당신은 당신이 libpng-dev이 필요하다는 것을 알게 될 것이다.

은 따라서 마지막으로, 전체 Dockerfile은 다음과 비슷한 모습이 될 것

FROM php:5.6-cli 
RUN apt-get -qq update && apt-get -qq install libpng-dev 
RUN docker-php-ext-install gd > /dev/null 

따라서 나는 /dev/null에 파이프 출력을 좋아 출력에서 ​​조금 장황 고정 표시기-PHP-EXT-설치합니다. 오류 및 경고는 계속 인쇄됩니다.

docker build -t php-gd . 
docker run php-gd /bin/bash -c "php -m | grep gd" 

가 인쇄됩니다 :

하십시오 고정 표시기-작성 스택 내에서

gd 

같은

당신은 이미지가 이미지를 실행하여 적절한 확장자가 있음을 확인하실 수 있습니다

docker-compose.yml :

gd-example: 
    build: . 
    tty: true 

docker-compose up --build -d 
docker ps // to find container's name. You may also set in the config 
docker exec -it docker_gd-example_1 php -m | grep gd  

두 sidenotes : 당신이 당신의 용기를 구축하고 그것에서 apt-get install php5-gd를 실행하는 경우 귀하의 질문에서

  1. 는 명확하지 않습니다. 그렇다면, 그 컨테이너 안에 php5-gd가 설치 될 것이고, 다시 만들 때마다 사라질 것입니다.항상 Dockerfile에서 컨테이너에 물건을 추가하십시오.

  2. php:7.1-cli 시도하십시오. PHP 5.6을 지원해야합니까? ;)

+0

정답입니다. – programmerq

+0

명령 print gd를 실행할 때. 하지만 내가 docker-compose -p라는 이름으로 모든 컨테이너를 다시 시작할 때 내부에 들어가서'php -m | grep gd'아무것도 없습니다 :/ – Coluh

+0

@devtreat'docker-compose build'를 통해 컨테이너를 재 구축 했습니까? – k0pernikus

관련 문제