Dans cet article de blog, nous expliquerons comment Dockeriser une application CodeIgniter 3. À la fin de ce guide, vous disposerez d'une application conteneurisée fonctionnant avec Apache, PHP et MySQL, toutes gérées via Docker Compose. Cette approche rationalisera votre environnement de développement et garantira des configurations cohérentes sur plusieurs systèmes.
Avant d'entrer dans les détails, assurez-vous que les outils suivants sont installés :
Le Dockerfile définit l'environnement dans lequel votre application s'exécutera. Voici comment le configurer :
# 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
Définissons maintenant un fichier docker-compose.yml, qui configurera et exécutera plusieurs conteneurs à la fois pour votre application Web et la base de données.
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
Une fois vos fichiers Dockerfile et docker-compose.yml prêts, il est temps de créer et d'exécuter les conteneurs. À la racine de votre projet, ouvrez un terminal et exécutez les commandes suivantes :
Construisez les images Docker :
docker-compose build
Démarrez les conteneurs :
docker-compose up
Cela démarrera à la fois l'application CodeIgniter et la base de données MySQL. Le conteneur d'applications sera accessible sur http://localhost:8080, tandis que la base de données MySQL fonctionnera sur le port 3306.
Maintenant, assurons-nous que CodeIgniter peut se connecter à la base de données MySQL à l'intérieur du conteneur. Ouvrez votre application/config/database.php et mettez à jour les paramètres de connexion à la base de données :
$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 );
Une fois les conteneurs installés, visitez http://localhost:8080 dans votre navigateur Web. Si tout est correctement configuré, votre application CodeIgniter 3 devrait fonctionner correctement dans un conteneur Docker.
Pour arrêter les conteneurs, exécutez :
docker-compose down
Dans ce guide, nous avons réussi à Dockeriser une application CodeIgniter 3, la rendant portable et facile à gérer. Docker Compose nous permet de définir et d'exécuter facilement des applications multi-conteneurs, ce qui le rend parfait pour les environnements de développement et de production.
En utilisant Docker, vous garantissez un environnement cohérent pour tous les développeurs et déployez facilement votre application sur différents systèmes sans vous soucier des dépendances. Si vous souhaitez faire évoluer votre application ou l'exécuter dans un environnement cloud, Docker la rend incroyablement simple à gérer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!