2017-02-10 21 views
1

私はコンテナの中にプロジェクトを持っていて、イメージ作成のためにgdライブラリを使用しようとしています。libgdがphpにインストールされていません:5.6-cliドッカー

私は、コンテナのbashの内部で次のコマンドを実行します。

apt-get install php5-gd 

何も、再起動後に変化しないとphp -m

私は何をすべきを実行?

編集:

私は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

「実行するbash」とはどういう意味ですか? 'php -m'をどこでどのように実行しようとしているのか正確に述べてください。 – k0pernikus

+0

@ k0pernikus 'sudo docker exec -ti name bash' inside私は' php -m'を使用します – Coluh

+0

新しく作成されたイメージではなく古いコンテナを実行すると仮定します。イメージが適切なモジュールを持っているかどうかを確認するために、自分の答えを更新しました。 – k0pernikus

答えて

3

gdを手動でインストールしないでください。そのためにdocker-php-ext-installがあります。 dockerfileインサイド

、追加:

RUN docker-php-ext-install gd 

をあなたが必要がありますどのような依存関係を手動で把握する必要がありdocker-php-ext-installといらだちのビットがあります。自動的に解決されません。あなたがエラーを探している場合、あなたはあなたがlibpng-devが必要なことがわかります

configure: error: png.h not found. 

:このため、コマンドはと、自分自身でクラッシュします。

はこのため最終的には、全体Dockerfileは次のようになります。ドッカ-PHP-EXT-インストール

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にパイプ、その出力をしたいと、その出力に少し冗長です。エラーと警告は引き続き印刷されます。

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:

  1. ご質問から、あなたのコンテナを構築した場合に明確ではありませんでしたし、それからapt-get install php5-gdを実行しています。もしそうなら、それはそのコンテナ内にphp5-gdをインストールし、それを再作成するたびに消えてしまいます。Dockerfileの中から常に容器に物を入れてください。

  2. php:7.1-cliを試してください。あなたは本当にPHP 5.6をサポートする必要がありますか? ;)

+0

これは正解です。 – programmerq

+0

あなたのコマンドprint gdを実行すると。しかし私がドッカーを作ったときに、私のコンテナのすべてのコンテナを再起動すると、内部に入って 'php -m | grep gd '何もない:/ – Coluh

+0

@devtreat' docker-compose build'でコンテナを再構築しましたか? – k0pernikus

関連する問題