이 블로그 게시물에서는 CodeIgniter 3 애플리케이션을 Dockerize하는 방법을 살펴보겠습니다. 이 가이드가 끝나면 Docker Compose를 통해 관리되는 Apache, PHP 및 MySQL로 실행되는 컨테이너화된 애플리케이션을 갖게 됩니다. 이 접근 방식은 개발 환경을 간소화하고 여러 시스템에서 일관된 설정을 보장합니다.
자세한 내용을 알아보기 전에 다음 도구가 설치되어 있는지 확인하세요.
Dockerfile은 애플리케이션이 실행될 환경을 정의합니다. 설정 방법은 다음과 같습니다.
# Use an official PHP image with Apache FROM php:8.2-apache # Enable Apache mod_rewrite for CodeIgniter RUN a2enmod rewrite # Set the working directory in the container WORKDIR /var/www/html # Copy project files into the container COPY . /var/www/html # Install necessary PHP extensions RUN docker-php-ext-install mysqli # Set proper permissions for Apache to access files RUN chown -R www-data:www-data /var/www/html && chmod -R 755 /var/www/html # Expose port 80 EXPOSE 80
이제 웹 애플리케이션과 데이터베이스 모두에 대해 여러 컨테이너를 구성하고 실행하는 docker-compose.yml 파일을 정의해 보겠습니다.
version: '3.8' services: app: build: context: . dockerfile: Dockerfile container_name: ci3-docker # Set the container name here ports: - "8080:80" # Map port 80 of the container to port 8080 on the host volumes: - .:/var/www/html # Mount current directory to /var/www/html inside the container depends_on: - db # Ensure the database is up before starting the application db: image: mysql:8.0 # Uses the official MySQL image container_name: mysql restart: always environment: MYSQL_ROOT_PASSWORD: root # Root password for MySQL MYSQL_DATABASE: ci3docker # Initial database to create ports: - "3306:3306" # Expose port 3306 for database connections volumes: - db_data:/var/lib/mysql # Persist MySQL data volumes: db_data: name: ci3-docker # Name the volume for MySQL data persistence
Dockerfile 및 docker-compose.yml 파일이 준비되면 컨테이너를 빌드하고 실행할 차례입니다. 프로젝트 루트에서 터미널을 열고 다음 명령을 실행합니다.
Docker 이미지 빌드:
docker-compose build
컨테이너 시작:
docker-compose up
이렇게 하면 CodeIgniter 애플리케이션과 MySQL 데이터베이스가 모두 시작됩니다. 앱 컨테이너는 http://localhost:8080에서 액세스할 수 있고 MySQL 데이터베이스는 포트 3306에서 실행됩니다.
이제 CodeIgniter가 컨테이너 내부의 MySQL 데이터베이스에 연결할 수 있는지 확인해 보겠습니다. application/config/database.php를 열고 데이터베이스 연결 설정을 업데이트하세요:
$db['default'] = array( 'dsn' => '', 'hostname' => 'db', // Service name from Docker Compose 'username' => 'root', 'password' => 'root', // Password set in docker-compose.yml 'database' => 'ci3docker', // Database name set in docker-compose.yml 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
컨테이너가 실행되면 웹 브라우저에서 http://localhost:8080을 방문하세요. 모든 것이 올바르게 설정되면 CodeIgniter 3 애플리케이션이 Docker 컨테이너 내에서 원활하게 실행되어야 합니다.
컨테이너를 중지하려면 다음을 실행하세요.
docker-compose down
이 가이드에서는 CodeIgniter 3 애플리케이션을 성공적으로 Docker화하여 이식 가능하고 관리하기 쉽게 만들었습니다. Docker Compose를 사용하면 다중 컨테이너 애플리케이션을 쉽게 정의하고 실행할 수 있어 개발 및 프로덕션 환경에 적합합니다.
Docker를 사용하면 모든 개발자에게 일관된 환경을 보장하고 종속성에 대한 걱정 없이 다양한 시스템에 애플리케이션을 쉽게 배포할 수 있습니다. 애플리케이션을 확장하거나 클라우드 환경에서 실행하려는 경우 Docker를 사용하면 관리가 놀라울 정도로 간단해집니다.
위 내용은 Dockerize CodeIgniter 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!