> 백엔드 개발 > PHP 튜토리얼 > Dockerize CodeIgniter 단계별 가이드

Dockerize CodeIgniter 단계별 가이드

Mary-Kate Olsen
풀어 주다: 2024-12-06 12:57:11
원래의
1063명이 탐색했습니다.

Dockerize CodeIgniter A Step-by-Step Guide

이 블로그 게시물에서는 CodeIgniter 3 애플리케이션을 Dockerize하는 방법을 살펴보겠습니다. 이 가이드가 끝나면 Docker Compose를 통해 관리되는 Apache, PHP 및 MySQL로 실행되는 컨테이너화된 애플리케이션을 갖게 됩니다. 이 접근 방식은 개발 환경을 간소화하고 여러 시스템에서 일관된 설정을 보장합니다.

전제 조건

자세한 내용을 알아보기 전에 다음 도구가 설치되어 있는지 확인하세요.

  • Docker: 애플리케이션과 해당 종속성을 컨테이너화합니다.
  • Docker Compose: 다중 컨테이너 Docker 애플리케이션을 관리합니다.
  • CodeIgniter 3: 기존 CodeIgniter 3 프로젝트

1단계: Dockerfile 설정:

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
로그인 후 복사

2단계: Docker Compose 설정

이제 웹 애플리케이션과 데이터베이스 모두에 대해 여러 컨테이너를 구성하고 실행하는 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
로그인 후 복사

3단계: 컨테이너 구축 및 실행

Dockerfile 및 docker-compose.yml 파일이 준비되면 컨테이너를 빌드하고 실행할 차례입니다. 프로젝트 루트에서 터미널을 열고 다음 명령을 실행합니다.
Docker 이미지 빌드:

docker-compose build
로그인 후 복사

컨테이너 시작:

docker-compose up
로그인 후 복사

이렇게 하면 CodeIgniter 애플리케이션과 MySQL 데이터베이스가 모두 시작됩니다. 앱 컨테이너는 http://localhost:8080에서 액세스할 수 있고 MySQL 데이터베이스는 포트 3306에서 실행됩니다.

4단계: CodeIgniter 데이터베이스 구성 업데이트

이제 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
);
로그인 후 복사

5단계: 애플리케이션에 액세스

컨테이너가 실행되면 웹 브라우저에서 http://localhost:8080을 방문하세요. 모든 것이 올바르게 설정되면 CodeIgniter 3 애플리케이션이 Docker 컨테이너 내에서 원활하게 실행되어야 합니다.

6단계: Docker 컨테이너 관리

컨테이너를 중지하려면 다음을 실행하세요.

docker-compose down
로그인 후 복사

결론

이 가이드에서는 CodeIgniter 3 애플리케이션을 성공적으로 Docker화하여 이식 가능하고 관리하기 쉽게 만들었습니다. Docker Compose를 사용하면 다중 컨테이너 애플리케이션을 쉽게 정의하고 실행할 수 있어 개발 및 프로덕션 환경에 적합합니다.

Docker를 사용하면 모든 개발자에게 일관된 환경을 보장하고 종속성에 대한 걱정 없이 다양한 시스템에 애플리케이션을 쉽게 배포할 수 있습니다. 애플리케이션을 확장하거나 클라우드 환경에서 실행하려는 경우 Docker를 사용하면 관리가 놀라울 정도로 간단해집니다.

위 내용은 Dockerize CodeIgniter 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿