In diesem Blogbeitrag erklären wir Ihnen, wie Sie eine CodeIgniter 3-Anwendung dockerisieren. Am Ende dieses Leitfadens verfügen Sie über eine Containeranwendung, die mit Apache, PHP und MySQL läuft und alle über Docker Compose verwaltet wird. Dieser Ansatz optimiert Ihre Entwicklungsumgebung und gewährleistet konsistente Setups über mehrere Systeme hinweg.
Bevor wir uns mit den Details befassen, stellen Sie sicher, dass Sie die folgenden Tools installiert haben:
Die Docker-Datei definiert die Umgebung, in der Ihre Anwendung ausgeführt wird. So richten Sie es ein:
# 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
Jetzt definieren wir eine docker-compose.yml-Datei, die mehrere Container sowohl für Ihre Webanwendung als auch für die Datenbank konfiguriert und ausführt.
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
Sobald Ihre Dockerfile- und docker-compose.yml-Dateien fertig sind, ist es an der Zeit, die Container zu erstellen und auszuführen. Öffnen Sie in Ihrem Projektstamm ein Terminal und führen Sie die folgenden Befehle aus:
Erstellen Sie die Docker-Images:
docker-compose build
Container starten:
docker-compose up
Dadurch werden sowohl die CodeIgniter-Anwendung als auch die MySQL-Datenbank gestartet. Auf den App-Container kann unter http://localhost:8080 zugegriffen werden, während die MySQL-Datenbank auf Port 3306 ausgeführt wird.
Stellen wir nun sicher, dass CodeIgniter eine Verbindung zur MySQL-Datenbank im Container herstellen kann. Öffnen Sie Ihre application/config/database.php und aktualisieren Sie die Datenbankverbindungseinstellungen:
$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 );
Sobald die Container verfügbar sind, besuchen Sie http://localhost:8080 in Ihrem Webbrowser. Wenn alles richtig eingerichtet ist, sollte Ihre CodeIgniter 3-Anwendung reibungslos in einem Docker-Container laufen.
Um die Container zu stoppen, führen Sie Folgendes aus:
docker-compose down
In diesem Leitfaden haben wir eine CodeIgniter 3-Anwendung erfolgreich per Docker implementiert, um sie portabel und einfach zu verwalten zu machen. Mit Docker Compose können wir ganz einfach Multi-Container-Anwendungen definieren und ausführen, was es perfekt für Entwicklungs- und Produktionsumgebungen macht.
Durch die Verwendung von Docker stellen Sie eine konsistente Umgebung für alle Entwickler sicher und stellen Ihre Anwendung problemlos auf verschiedenen Systemen bereit, ohne sich Gedanken über Abhängigkeiten machen zu müssen. Wenn Sie Ihre Anwendung skalieren oder in einer Cloud-Umgebung ausführen möchten, macht Docker die Verwaltung unglaublich einfach.
Das obige ist der detaillierte Inhalt vonDockerize CodeIgniter Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!