Установка GD в Docker
Я полный новичок Docker, но мне нужно поддерживать существующую систему. Dockerfile я использую, как показано ниже:
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
когда я запускаю " docker build [sitename]", все кажется нормальным, пока я не получу ошибку:
configure: error: png.h not found.
The command '/bin/sh -c docker-php-ext-install gd' returned a non-zero code: 1
в чем причина этой ошибки?
1 ответов
вы должны добавить на 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
Дайте мне знать, если вы получаете любые ошибки.
EDIT:
вы должны увидеть нечто вроде этого:
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 -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 "внутри" контейнера.
обычно вы запускаете контейнер в фоновом режиме. Для этого добавьте до docker run
команда (но для целей тестирования вы можете опустить -d
чтобы увидеть вывод в консоли).
надеюсь, это поможет.