在這篇部落格文章中,我們將演練如何 Dockerize CodeIgniter 3 應用程式。在本指南結束時,您將擁有一個使用 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
現在讓我們定義一個 docker-compose.yml 文件,它將為您的 Web 應用程式和資料庫配置和運行多個容器。
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中文網其他相關文章!