본문 바로가기
Linux&Ubuntu/Docker&kuber

docker php 설정하기

by Vittorio_Lee 2023. 9. 18.
728x90
반응형
SMALL

1) PHP 환경 설정 방법
php 컨테이너 내의 설정 파일 (php.ini) 를 호스트 서버로 복사하고 호스트 서버의 php.ini 파일을 사용하도록 해야 합니다.
컨테이너가 구동중인 상태에서 아래와 같이 파일을 복사 합니다.
php 컨테이너의 /usr/local/etc/php/php.ini-development 파일을 /home/vittorio/php/conf/ 디렉토리 아래에 php.ini 이름으로 복사.

# mkdir -p /home/vittorio/php/conf
# docker cp php:/usr/local/etc/php/php.ini-development /home/vittorio/php/conf/php.ini
Successfully copied 74.75kB to /home/vittorio/php/conf/php.ini

기본적으로 소스내 PHP 태그없이도 코드 인식이 가능하도록하고 한국 표준시를 출력하도록 설정합니다.

# vi /home/vittorio/php/conf/php.ini

short_open_tag = On
date.timezone = "Asia/Seoul"

호스트 서버에서 php.ini 파일을 사용할 수 있도록 docker-compose.yml 파일을 수정합니다.

# vi docker-compose.yml

...
    php:
        image: php:8.2.0-fpm
        container_name: php
        restart: unless-stopped
        ports:
            - "9000:9000"
        volumes:
            - /home/vittorio/httpd/html:/var/www/html
            - /home/vittorio/php/conf/php.ini:/usr/local/etc/php/php.ini
        command:
            - /bin/sh
            - -c
            - |
              echo "security.limit_extensions = .html .htm .php" >> /usr/local/etc/php-fpm.d/www.conf
              php-fpm

...

변경된 컨테이너를 적용합니다.

# docker compose stop php
# docker rm -v php
# docker compose up -d php

2) mysql 연동 및 테스트

php 컨테이너에서 docker-php-ext-install 명령을 이용해 필요한 라이브러리를 설치해줍니다. (mysqli.so 파일 생성)

# docker exec -it php /bin/bash
root@d0e884fa932f:/var/www/html# docker-php-ext-install mysqli
Configuring for:
PHP Api Version:         20220829
Zend Module Api No:      20220829
Zend Extension Api No:   420220829

호스트 서버에서 설정 파일을 열고 아래 행을 주석 해제 합니다.
# vi /home/vittorio/php/conf/php.ini
extension=mysqli
변경 사항을 적용합니다.
# docker compose restart php

웹 소스를 수정하여 MySQL 연동이 잘 되는지 테스트 해봅니다.

아래 소스 코드를 이용하여 작성한 뒤 웹브라우저에서 접근하면 확인이 가능합니다.

 


3) 기타 라이브러리 활성화
주로 사용하는 curl, gd, mbstring, openssl 라이브러리를 활성해 보겠습니다.
(사실 gd 만 추가 설치, 나머지는 재설치 과정)
mysqli 설치하는 방법과 같이 컨테이너에 접근하여 라이브러리를 설치하면 되지만,
그냥 설치 명령을 내리면 컨테이너에 필요한 패키지가 없다며 에러가 출력되므로
사전에 필요한 패키지를 설치하고 라이브러리 설치를 진행합니다.

# docker exec -it php /bin/bash
root@d0e884fa932f:/var/www/html# apt -y update

제일 먼저 리포지토리를 정리해야 패키지 설치가 잘 되므로 업데이트를 해줍니다.

root@d0e884fa932f:/var/www/html# apt -y install libcurl4-openssl-dev
root@d0e884fa932f:/var/www/html# docker-php-ext-install curl



(gd 라이브러리 설치)

root@8e2d3bf1c94f:/var/www/html# apt -y install zlib1g-dev libpng-dev

root@8e2d3bf1c94f:/var/www/html# docker-php-ext-install gd

gd 는 기본 허용 모듈에서 빠져 있기 때문에 사용을 위해 아래와 같이 추가 구성해줍니다.

root@8e2d3bf1c94f:/var/www/html# docker-php-ext-configure --with-gd

 

(mbstring 라이브러리 설치)

root@8e2d3bf1c94f:/var/www/html# apt -y install libonig-dev

root@8e2d3bf1c94f:/var/www/html# docker-php-ext-install mbstring

 

(openssl 라이브러리 설치)

root@8e2d3bf1c94f:/var/www/html# cd /usr/src/php/ext/openssl
root@233900ce6ef9:/usr/src/php/ext/openssl# cp config0.m4 config.m4
root@233900ce6ef9:/usr/src/php/ext/openssl# phpize
root@233900ce6ef9:/usr/src/php/ext/openssl# # apt -y install libssl-dev
root@233900ce6ef9:/usr/src/php/ext/openssl# docker-php-ext-install openssl

 

라이브러리 설치 완료 후 php 컨테이너를 재시작 하면 phpinfo 화면에서 설치한 모듈이 보여지게 됩니다.

# docker compose restart php

# docker exec php php -i |grep -i gd

 

728x90
반응형
LIST

'Linux&Ubuntu > Docker&kuber' 카테고리의 다른 글

docker porteiner로 mailserver 구축하기.  (0) 2023.09.18
Docker Portainer 설치  (0) 2023.09.18
Docker mysql 설정하기  (0) 2023.09.18
docker apm+ssl 인증서  (0) 2023.09.14
docker-compose 로 apm 기본 설치  (0) 2023.09.14