도커에 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
'도커 빌드 [sitname]'을 실행하면 오류가 표시될 때까지 모든 것이 정상으로 표시됩니다.
configure: error: png.h not found.
The command '/bin/sh -c docker-php-ext-install gd' returned a non-zero code: 1
이 에러의 원인은 무엇입니까?
를 추가해야 합니다.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
편집 2:
모든 것을 다시 한 번 확인해 보겠습니다.
를 실행해 주세요.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
도움이 됐으면 좋겠다.
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 ...
이것.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 apt-get update && \
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ && \
docker-php-ext-install gd
안타깝게도 일부 php 확장자는 다른 프로그램에 종속되어 있습니다.PHP 확장을 설치하기 위해 사용할 수 있는 docker-php-extension-installer라는 프로젝트가 있습니다.필요한 의존관계도 확실히 존재합니다.
이 외부 스크립트는 여러 컨테이너에 필요하기 때문에 공유 스크립트에 넣어 필요한 Docker 파일에 포함합니다.
스크립트(.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 \
;
도커 파일
# 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
주의:이 경우 올바른 빌드 컨텍스트를 사용하십시오.
언급URL : https://stackoverflow.com/questions/39657058/installing-gd-in-docker
'programing' 카테고리의 다른 글
새로운 java.io을 작성하는 방법메모리에 파일이 있습니까? (0) | 2022.10.15 |
---|---|
PHP의 "Headers already sent" 오류를 수정하는 방법 (0) | 2022.10.15 |
Mysql/Maridb Python Connector가 테이블에 데이터를 로드하지 않습니다. (0) | 2022.10.15 |
특정 열을 가져오기 위한 휴지 상태 조건 쿼리 (0) | 2022.10.15 |
facebook graph api를 사용하여 사용자 프로필 사진을 표시하려면 어떻게 해야 하나요? (0) | 2022.10.15 |