このブログ投稿では、CodeIgniter 3 アプリケーションを Dockerize する方法について説明します。このガイドを終えると、Apache、PHP、MySQL で実行されるコンテナ化されたアプリケーションがすべて Docker Compose で管理されるようになります。このアプローチにより、開発環境が合理化され、複数のシステム間で一貫したセットアップが確保されます。
詳細を説明する前に、次のツールがインストールされていることを確認してください:
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
次に、Web アプリケーションとデータベースの両方に対して複数のコンテナを構成して実行する 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 );
コンテナが起動したら、Web ブラウザで http://localhost:8080 にアクセスします。すべてが正しく設定されていれば、CodeIgniter 3 アプリケーションは Docker コンテナ内でスムーズに実行されるはずです。
コンテナを停止するには、次のコマンドを実行します:
docker-compose down
このガイドでは、CodeIgniter 3 アプリケーションの Docker 化に成功し、ポータブルで管理が容易になりました。 Docker Compose を使用すると、マルチコンテナ アプリケーションを簡単に定義して実行できるため、開発環境や運用環境に最適です。
Docker を使用すると、すべての開発者にとって一貫した環境が確保され、依存関係を気にせずにアプリケーションをさまざまなシステムに簡単にデプロイできます。アプリケーションを拡張したり、クラウド環境で実行したりする場合、Docker を使用すると管理が驚くほど簡単になります。
以上がDockerize CodeIgniter ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。