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