evi*_*ary 41 php docker dockerfile
我是一个完整的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
Run Code Online (Sandbox Code Playgroud)
当我运行'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
Run Code Online (Sandbox Code Playgroud)
这个错误的原因是什么?
lmt*_*mtx 92
您应该将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
Run Code Online (Sandbox Code Playgroud)
然后转到目录Dockerfile并运行:
docker build -t sitename .
它适用于我的情况:
Removing intermediate container f03522715567
Successfully built 9d69212196a2
Run Code Online (Sandbox Code Playgroud)
如果您有任何错误,请告诉我.
编辑:
你应该看到这样的东西:
REPOSITORY TAG IMAGE ID CREATED SIZE
sitename latest 9d69212196a2 19 minutes ago 414 MB
<none> <none> b6c69576a359 25 minutes ago 412.3 MB
Run Code Online (Sandbox Code Playgroud)
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在控制台中查看输出).
如果您决定在后台运行容器,则可以使用检查日志docker logs sitename_test.要跟踪日志(并查看日志中的更新),请使用以下-f选项:
docker logs -f sitename_test
希望有所帮助.
pha*_*est 24
OP 的情况并非如此,但我发现对于那些使用php:7.4-fpm-alpine语法的人来说有点不同
FROM php:7.4-fpm-alpine
# ... Other instructions ...
# Setup GD extension
RUN apk add --no-cache \
freetype \
libjpeg-turbo \
libpng \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd \
--with-freetype=/usr/include/ \
# --with-png=/usr/include/ \ # No longer necessary as of 7.4; https://github.com/docker-library/php/pull/910#issuecomment-559383597
--with-jpeg=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-enable gd \
&& apk del --no-cache \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
&& rm -rf /tmp/*
# ... Other instructions ...
Run Code Online (Sandbox Code Playgroud)
这Dockerfile与Php7 https://hub.docker.com/r/giapnh/php7-gd一起使用
FROM php:7-fpm
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN apt-get update -y && apt-get install -y libwebp-dev libjpeg62-turbo-dev libpng-dev libxpm-dev \
libfreetype6-dev
RUN apt-get update && \
apt-get install -y \
zlib1g-dev
RUN docker-php-ext-install mbstring
RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip
RUN docker-php-ext-configure gd --with-gd --with-webp-dir --with-jpeg-dir \
--with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir \
--enable-gd-native-ttf
RUN docker-php-ext-install gd
CMD ["php-fpm"]
EXPOSE 9000
Run Code Online (Sandbox Code Playgroud)
不幸的是,一些 php 扩展依赖于其他程序。有一个名为docker-php-extension-installer的项目可用于安装 PHP 扩展。它将确保所需的依赖项也存在。
由于我需要在多个容器中使用该外部脚本,因此我将它放在一个共享脚本中,然后将其包含在所需的 Dockerfile 中。
脚本(在 .shared/scripts/install_php_extensions.sh)
#!/bin/sh
# add wget
apt-get update -yqq && apt-get -f install -yyq wget
# download helper script
wget -q -O /usr/local/bin/install-php-extensions https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions \
|| (echo "Failed while downloading php extension installer!"; exit 1)
# install all required extensions
chmod uga+x /usr/local/bin/install-php-extensions && sync && install-php-extensions \
gd \
;
Run Code Online (Sandbox Code Playgroud)
文件
# get the scripts from the build context and make sure they are executable
COPY .shared/scripts/ /tmp/scripts/
RUN chmod +x -R /tmp/scripts/
# install extensions
RUN /tmp/scripts/install_php_extensions.sh
Run Code Online (Sandbox Code Playgroud)
这个答案为时已晚,但它会有所帮助。
RUN apt-get update && \
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \
docker-php-ext-install gd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46260 次 |
| 最近记录: |