Dalam catatan blog ini, kami akan membincangkan cara untuk Dockerize aplikasi CodeIgniter 3. Pada penghujung panduan ini, anda akan mempunyai aplikasi kontena yang berjalan dengan Apache, PHP dan MySQL, semuanya diuruskan melalui Docker Compose. Pendekatan ini akan menyelaraskan persekitaran pembangunan anda dan memastikan persediaan yang konsisten merentas berbilang sistem.
Sebelum kami menyelami butirannya, pastikan anda telah memasang alatan berikut:
Fail Docker mentakrifkan persekitaran di mana aplikasi anda akan dijalankan. Begini cara untuk menyediakannya:
# 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
Sekarang mari kita tentukan fail docker-compose.yml, yang akan mengkonfigurasi dan menjalankan berbilang bekas untuk aplikasi web anda dan pangkalan data.
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
Setelah fail Dockerfile dan docker-compose.yml anda sedia, tiba masanya untuk membina dan menjalankan bekas. Dalam akar projek anda, buka terminal dan jalankan arahan berikut:
Bina imej Docker:
docker-compose build
Mulakan bekas:
docker-compose up
Ini akan memulakan aplikasi CodeIgniter dan pangkalan data MySQL. Bekas apl boleh diakses di http://localhost:8080, manakala pangkalan data MySQL akan dijalankan pada port 3306.
Sekarang, mari pastikan CodeIgniter boleh menyambung ke pangkalan data MySQL di dalam bekas. Buka application/config/database.php anda dan kemas kini tetapan sambungan pangkalan data:
$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 );
Setelah bekas siap, lawati http://localhost:8080 dalam pelayar web anda. Jika semuanya disediakan dengan betul, aplikasi CodeIgniter 3 anda seharusnya berjalan lancar di dalam bekas Docker.
Untuk menghentikan bekas, jalankan:
docker-compose down
Dalam panduan ini, kami berjaya melabuhkan aplikasi CodeIgniter 3, menjadikannya mudah alih dan mudah diurus. Docker Compose membolehkan kami mentakrif dan menjalankan aplikasi berbilang bekas dengan mudah, menjadikannya sempurna untuk pembangunan dan persekitaran pengeluaran.
Dengan menggunakan Docker, anda memastikan persekitaran yang konsisten untuk semua pembangun dan menggunakan aplikasi anda dengan mudah ke pelbagai sistem tanpa perlu risau tentang kebergantungan. Jika anda ingin menskalakan aplikasi anda atau menjalankannya dalam persekitaran awan, Docker menjadikannya sangat mudah untuk diurus.
Atas ialah kandungan terperinci Dockerize CodeIgniter Panduan Langkah demi Langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!