4. Docker PHP 환경 설정 및 MySQL 연동, 기타 라이브러리 활성화
4. Docker PHP 환경 설정하기 (php.ini)
1) PHP 환경 설정 방법
php 컨테이너 내의 설정 파일 (php.ini) 를 호스트 서버로 복사하고 호스트 서버의 php.ini 파일을 사용하도록 해야 합니다.
컨테이너가 구동중인 상태에서 아래와 같이 파일을 복사 합니다.
php 컨테이너의 /usr/local/etc/php/php.ini-development 파일을 /home/sysdocu/php/conf/ 디렉토리 아래에 php.ini 이름으로 복사.
# mkdir -p /home/sysdocu/php/conf
# docker cp php:/usr/local/etc/php/php.ini-development /home/sysdocu/php/conf/php.ini
기본적으로 소스내 PHP 태그없이도 코드 인식이 가능하도록하고 한국 표준시를 출력하도록 설정합니다.
# vi /home/sysdocu/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/sysdocu/httpd/html:/var/www/html - /home/sysdocu/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@8e2d3bf1c94f:/var/www/html# docker-php-ext-install mysqli
호스트 서버에서 설정 파일을 열고 아래 행을 주석 해제 합니다.
# vi /home/sysdocu/php/conf/php.ini
extension=mysqli |
변경 사항을 적용합니다.
# docker compose restart php
웹 소스를 수정하여 MySQL 연동이 잘 되는지 테스트 해봅니다.
아래 소스 코드를 이용하여 작성한 뒤 웹브라우저에서 접근하면 확인이 가능합니다.
# vi /home/sysdocu/httpd/html/index.html
MySQL Connect TEST<br> <? $conn = mysqli_connect("mysql", "sysdocu", "12345678", "sysdocudb"); # 여기에서 mysql 은 컨테이너 이름 if ($conn) { echo "MySQL 연결 성공"; } else { echo "MySQL 연결 실패"; } $result = mysqli_query($conn, "SELECT VERSION() AS VERSION"); $data = mysqli_fetch_assoc($result); echo "<br>Version : " . $data['VERSION']; ?> |
3) 기타 라이브러리 활성화
주로 사용하는 curl, gd, mbstring, openssl 라이브러리를 활성해 보겠습니다.
(사실 gd 만 추가 설치, 나머지는 재설치 과정)
mysqli 설치하는 방법과 같이 컨테이너에 접근하여 라이브러리를 설치하면 되지만,
그냥 설치 명령을 내리면 컨테이너에 필요한 패키지가 없다며 에러가 출력되므로
사전에 필요한 패키지를 설치하고 라이브러리 설치를 진행합니다.
# docker exec -it php /bin/bash
제일 먼저 리포지토리를 정리해야 패키지 설치가 잘 되므로 업데이트를 해줍니다.
root@8e2d3bf1c94f:/var/www/html# apt -y update
(curl 라이브러리 설치)
root@8e2d3bf1c94f:/var/www/html# apt -y install libcurl4-openssl-dev
root@8e2d3bf1c94f:/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
'리눅스 > Containers & Kubernetes' 카테고리의 다른 글
6. Docker PHPMyAdmin 설치 (0) | 2022.12.23 |
---|---|
5. Docker 이미지 생성 (컨테이너 현재 상태 저장) (0) | 2022.12.22 |
3. Docker MySQL 환경 설정 및 DB, 사용자 계정 생성 (0) | 2022.12.20 |
2. Docker httpd 환경 설정하기 (PHP 연동, Virtualhost 및 SSL 적용) (0) | 2022.12.20 |
1. Ubuntu 22.04 에서 Docker 사용하기 (APM 기본 설치) (0) | 2022.12.14 |