PHP 컨테이너화(Dockerize)하는 방법
·
3분 읽기
도커(Docker)를 사용하여 PHP 7.4와 CodeIgniter 4를 컨테이너화하는 방법을 단계별로 설명드리겠습니다. 다음은 기본적인 설정과 실행 과정을 설명한 것입니다.
1. 프로젝트 디렉토리 구조 설정
먼저 프로젝트의 기본 디렉토리 구조를 설정합니다.
my-codeigniter-project/
├── app/
├── public/
├── writable/
├── .env
├── composer.json
├── composer.lock
└── Dockerfile
2. Dockerfile 작성
Dockerfile을 프로젝트 루트 디렉토리에 작성합니다.
# 베이스 이미지 설정 (PHP 7.4 및 Apache)
FROM php:7.4-apache
# 필요한 패키지 설치 및 시스템 업데이트
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
zip \
unzip \
git \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd \
&& docker-php-ext-install mysqli pdo pdo_mysql \
&& a2enmod rewrite
# Composer 설치
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 프로젝트 파일 복사
COPY . /var/www/html
# Apache 설정 파일 복사
COPY ./apache.conf /etc/apache2/sites-available/000-default.conf
# 환경 변수 설정
ENV APACHE_DOCUMENT_ROOT /var/www/html/public
# 권한 설정
RUN chown -R www-data:www-data /var/www/html \
&& chmod -R 755 /var/www/html
# Apache 재시작
RUN service apache2 restart
3. Apache 설정 파일 작성
apache.conf 파일을 프로젝트 루트 디렉토리에 작성합니다.
DocumentRoot /var/www/html/public
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
4. Docker Compose 파일 작성
프로젝트의 루트 디렉토리에 docker-compose.yml 파일을 작성합니다.
version: '3.8'
services:
app:
build:
context: .
ports:
- "8080:80"
volumes:
- .:/var/www/html
networks:
- app-network
db:
image: mysql:5.7
container_name: mysql
restart: unless-stopped
environment:
MYSQL_DATABASE: codeigniter
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
db_data:
5. CodeIgniter 4 설정 파일 업데이트
app/Config/Database.php 파일을 수정하여 데이터베이스 설정을 Docker 환경에 맞게 조정합니다.
public $default = [
'DSN' => '',
'hostname' => 'db',
'username' => 'user',
'password' => 'password',
'database' => 'codeigniter',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'cacheOn' => false,
'cacheDir' => '',
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
6. Docker 컨테이너 빌드 및 실행
이제 터미널을 열고 프로젝트 루트 디렉토리로 이동한 후, 다음 명령어를 실행하여 Docker 컨테이너를 빌드하고 실행합니다.
docker-compose up --build
7. 웹 브라우저에서 확인
브라우저를 열고 http://localhost:8080에 접속하여 CodeIgniter 4 기본 페이지가 보이는지 확인합니다.
이제 PHP 7.4와 CodeIgniter 4가 Docker를 통해 설정되고 실행되었습니다. 필요에 따라 추가적인 설정이나 커스터마이징을 할 수 있습니다.