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 |
'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 |