2016-09-23 30 views
6

Tôi là một người mới sử dụng Docker hoàn chỉnh nhưng phải duy trì một hệ thống hiện có. Các Dockerfile Tôi đang sử dụng như sau:Cài đặt GD trong Docker

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 

Khi tôi chạy 'Docker Êđê dựng [sitename]' tất cả mọi thứ có vẻ ok cho đến khi tôi nhận được lỗi:

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

nguyên nhân của lỗi này là gì?

Trả lời

16

Bạn nên thêm gói libpng-dev-Dockerfile của bạn:

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 

Sau đó đi vào thư mục với Dockerfile và chạy:

docker build -t sitename .

Nó làm việc trong trường hợp của tôi:

Removing intermediate container f03522715567 
Successfully built 9d69212196a2 

Hãy để tôi biết nếu bạn nhận được bất kỳ lỗi nào.

EDIT:

Bạn sẽ thấy một cái gì đó như thế này:

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

EDIT2:

Chỉ cần để kiểm tra tất cả mọi thứ tăng gấp đôi:

Hãy chạy docker build lệnh này cách:

docker build -t sitename:1.0 .

(thêm :1.0 không nên thay đổi bất cứ điều gì, tôi đã thêm nó chỉ để có thêm hàng trong docker images đầu ra)

Sau đó bắt đầu container:

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

Nó sẽ làm việc bình thường.

Tôi giả định rằng apache đang sử dụng cổng tiêu chuẩn (80) - có thể bạn cần phải điều chỉnh điều đó. Nếu bạn có các dịch vụ khác/container lắng nghe trên cổng 80, bạn có thể làm cho container của bạn lắng nghe trên cổng khác:

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

Đó sẽ chuyển hướng giao thông từ cổng 8080 đến cổng 80 "bên trong" thùng sơn.

Thông thường bạn chạy vùng chứa trong nền. Để thực hiện việc này, hãy thêm tùy chọn -d vào lệnh docker run (nhưng với mục đích thử nghiệm, bạn có thể bỏ qua -d để xem kết quả đầu ra trong bảng điều khiển).

Hy vọng điều đó sẽ hữu ích.

+0

Điều đó dường như xây dựng nhưng trong khi làm như vậy tôi có một vài dòng màu đỏ xuất hiện; là những thất bại? – evilscary

+0

Vui lòng dán các dòng đó. Tôi đã thực hiện việc xây dựng đó nhưng không nhận được bất kỳ cảnh báo/lỗi nào. – lmtx

+0

Ngoài ra khi tôi kiểm tra 'hình ảnh docker' nó nói có một chạy xây dựng tại thời điểm tôi chạy nó, nhưng cột Repository có 'Không' chống lại nó. – evilscary

Các vấn đề liên quan