2016-09-23 161 views
6

我是一個完整的Docker新手,但不得不維護現有的系統。我使用的Dockerfile是如下:在Docker中安裝GD

FROM php:5.6-apache 

RUN docker-php-ext-install mysql mysqli 

RUN apt-get update -y && apt-get install -y sendmail 

RUN apt-get update && \ 
    apt-get install -y \ 
     zlib1g-dev 

RUN docker-php-ext-install mbstring 

RUN docker-php-ext-install zip 

RUN docker-php-ext-install gd 

當我運行「泊塢窗共建[站點名稱]」一切似乎確定,直到我得到的錯誤:

configure: error: png.h not found. 
The command '/bin/sh -c docker-php-ext-install gd' returned a non-zero code: 1 

什麼是這個錯誤的原因是什麼?

回答

16

您應該libpng-dev包添加到您的Dockerfile

FROM php:5.6-apache 

RUN docker-php-ext-install mysql mysqli 

RUN apt-get update -y && apt-get install -y sendmail libpng-dev 

RUN apt-get update && \ 
    apt-get install -y \ 
     zlib1g-dev 

RUN docker-php-ext-install mbstring 

RUN docker-php-ext-install zip 

RUN docker-php-ext-install gd 

然後進入目錄與Dockerfile並運行:

docker build -t sitename .

它的工作在我的情況:

Removing intermediate container f03522715567 
Successfully built 9d69212196a2 

讓我知道你是否有任何錯誤。

編輯:

您應該看到這樣的事情:

REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
sitename   latest    9d69212196a2  19 minutes ago  414 MB 
<none>    <none>    b6c69576a359  25 minutes ago  412.3 MB 

EDIT2:

只是爲了仔細檢查一切:

請運行docker build命令這方式:

docker build -t sitename:1.0 .

(添加:1.0應該不會改變什麼,我說這只是爲了有更多的行docker images輸出)

然後啓動容器:

docker run --name sitename_test -p 80:80 sitename:1.0

它應該工作正好。

我認爲Apache使用標準端口(80) - 也許你需要調整。如果您有其他服務/容器偵聽端口80,你可以讓你的容器監聽其他端口:

docker run --name sitename_test -p 8080:80 sitename:1.0

這將流量重定向從8080端口到端口80「內部」的容器。

通常你在後臺運行容器。爲此,將-d選項添加到docker run命令(但出於測試目的,您可以省略-d以查看控制檯中的輸出)。

希望有所幫助。

+0

這似乎建立,但這樣做時,我得到了幾行紅色出現;這些失敗了嗎? – evilscary

+0

請貼上這些行。我已經完成了構建,但沒有得到任何警告/錯誤。 – lmtx

+0

另外,當我檢查'docker images'時,它說在我運行它時有一個構建運行,但是Repository列對它有'None'。 – evilscary