개발 지식

개발 지식

PHP PHP + Docker 환경 최적화 꿀팁

페이지 정보

profile_image
영삼이
0건 209회 25-03-28 23:19

본문

✅ 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 마운트 또는 동기화 도구 사용 |

---

댓글목록

등록된 댓글이 없습니다.