PHP PHP + Docker 환경 최적화 꿀팁
페이지 정보

영삼이
본문
✅ PHP + Docker 환경 최적화 꿀팁
Docker는 PHP 개발에서 환경 일관성, 배포 자동화, 테스트 환경 구축 등에 매우 유용합니다. 하지만 기본 설정만으로는 성능과 개발 편의성이 떨어질 수 있습니다. 이 글에서는 실무에서 바로 적용할 수 있는 PHP + Docker 환경 최적화 팁을 소개합니다.
📁 1. 기본 디렉토리 구조 예시
project/
├── src/ # PHP 코드
├── docker/
│ ├── php/
│ │ └── Dockerfile
│ └── nginx/
│ └── default.conf
├── docker-compose.yml
🧱 2. PHP Dockerfile 구성 예시
[code]
FROM php:8.2-fpm
# 기본 확장 설치
RUN apt-get update && apt-get install -y \
zip unzip git curl libonig-dev libxml2-dev libzip-dev \
&& docker-php-ext-install pdo pdo_mysql mbstring zip
# Composer 설치
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
[/code]
⚙️ 3. docker-compose.yml 설정
[code=yaml]
version: '3.8'
services:
app:
build:
context: .
dockerfile: docker/php/Dockerfile
volumes:
- ./src:/var/www/html
networks:
- appnet
nginx:
image: nginx:latest
volumes:
- ./src:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
- "8080:80"
depends_on:
- app
networks:
- appnet
networks:
appnet:
[/code]
🌐 4. nginx 설정 최적화 (default.conf
)
[code]
server {
listen 80;
server_name localhost;
root /var/www/html/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
[/code]
🚀 5. 성능 최적화 포인트
-
✅ OPcache 설정 (
php.ini
또는 Dockerfile에서)
[code]
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0
[/code]
- 개발 중에는 `validate_timestamps=1` 권장
- ✅ **volume mount 성능 개선**
- Windows/Mac에서는 성능 저하 있으므로 **mutagen**, **docker-sync**, **cached** 옵션 활용
- 예: `volumes: ["./src:/var/www/html:cached"]`
- ✅ **Xdebug 개발 모드만 활성화**
- `xdebug.mode=debug,develop`만 켜고 prod에선 완전 비활성화
---
### 🧪 6. 실시간 코드 변경 반영
- `docker-compose.yml`에서 volume 마운트 설정으로 즉시 반영 가능
- 단, 성능 저하가 있을 수 있음 → 대안: **hot reload with Docker volumes + rsync**
---
### 🧠 요약
| 항목 | 내용 |
|------|------|
| PHP Dockerfile | 확장 설치 + Composer 내장 |
| nginx 구성 | Laravel/Symfony 기준 기본 라우팅 |
| 성능 팁 | OPcache, Xdebug, volume 성능 최적화 |
| 코드 반영 | volume 마운트 또는 동기화 도구 사용 |
---
- 이전글PHP로 GraphQL 서버 직접 구현하기 25.03.28
- 다음글PHP에서 상태 패턴(State Pattern) 활용 예시 25.03.28
댓글목록
등록된 댓글이 없습니다.